我正在尝试理解这行代码
vector<int>::iterator it = find(list_vector.begin(), list_vector.end(), 5)
这里我先前声明了vector<int> list_vector;
.
那么这个5是什么意思?它返回什么?如果它能在开头和结尾找到5,它会返回5吗?如果我想要编写一个if语句,想要查找语句中是否有数字10(如果有,返回true),我该如何做呢?
vector<int>::iterator it = find(list_vector.begin(), list_vector.end(), 5)
std::find
搜索其前两个参数指定范围内的元素。它返回一个迭代器,指向第一个匹配的元素。如果没有匹配的元素,则返回第二个参数。
list_vector.begin()
返回一个迭代器,指向list_vector
的第一个元素。
list_vector.end()
返回一个迭代器,指向list_vector
最后一个元素之后的位置。
5
是搜索的目标。 find()
将查找具有值为5
的元素。
如果您想确定向量中是否存在10,请执行以下操作:
if(std::find(list_vector.begin(), list_vector.end(), 10) == list_vector.end())
std::cout << "No 10, bummer\n";
else
std::cout << "I found a 10!\n";
或者,如果您想同时确定数字10是否存在 并且 确定它的位置:
std::vector<int>::iterator it = std::find(list_vector.begin(), list_vector.end(), 10);
if(it == list_vector.end())
std::cout << "No 10\n";
else
std::cout << "Look what I found: " << *it << "\n";
std::find
返回的是一个迭代器,而不是第三个参数的任何类型。 - chrisiterator it = std::find(v.begin(), v.end(), 10); std::cout << "第一次查找: " << *it << "\n"; it = std::find(it, v.end(), 10); std::cout << "第二次查找: " << *it << "\n";
- Robᵩ
plist.end()
(相当于NULL
的迭代器),那么就是这样。 - chrisaycock