好吧,我是新手,我很难理解这一点。
我做了这段代码,
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main (void)
{
vector <int> a;
int i;
a.push_back(1);
a.push_back(2);
a.push_back(3);
a.push_back(4);
a.push_back(5);
vector <int>::iterator position = find(a.begin(),a.end(),6);
cout<<*position<<"\n";
return 0;
}
我到处都读到,find
函数如果没有找到任何内容,就会将迭代器返回到 vector 的末尾。所以,当我这样做并搜索 vector 中不存在的值 6
时,它应该将迭代器返回到 vector 的末尾,实际上是 5
.在打印实际值时,它应该打印 5
但它打印的是 0
。为什么如果 find
在 vector 中找不到与该值相关的任何内容,它会将迭代器返回到最后一个值,然后它会打印 0
?
最佳答案
不,它不会返回 vector 的结尾,它会返回vector.end()
前者表示 vector 的最后一个元素,即 5。
后者 vector.end()
是 past the end of the vector
这增加了一些困惑,因为 vector.begin()
确实指向 vector 的第一个元素,但由于迭代这些容器的方式,这是必需的。
关于c++ - 在 C++ 中为 vector 查找函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25343720/