我正在尝试理解这行代码
vector<int>::iterator it = find(list_vector.begin(), list_vector.end(), 5)
我事先宣布vector<int> list_vector;
。
5做什么?它返回了什么?如果可以在开头和结尾找到它,它会返回5吗?如果我想创建一个if语句,并且我想查找数字10是否在语句中(如果是,返回true)我将如何去做?
答案 0 :(得分:10)
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";