理解查找和向量C ++

时间:2013-09-26 02:27:10

标签: c++ vector find

我正在尝试理解这行代码

vector<int>::iterator it = find(list_vector.begin(), list_vector.end(), 5)

我事先宣布vector<int> list_vector;

5做什么?它返回了什么?如果可以在开头和结尾找到它,它会返回5吗?如果我想创建一个if语句,并且我想查找数字10是否在语句中(如果是,返回true)我将如何去做?

1 个答案:

答案 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";