在C ++中查找函数<算法>

y

我在Ubuntu 18.04.2 LTS上使用g ++ 7.4.0

我想我发现了一个错误:

vector<int> a(10,1);
vector<int>::iterator it = find(a.begin()+6,a.begin()+3,8);
if(it != a.end()) cout<<"FOUND"<<endl;

结果:

FOUND

是否应该找不到?我还发现:

it = a.begin()+3
迈尔斯·布德奈克(Miles Budnek)

不,这不是错误。它完全符合标准定义:

来自[alg.find]

E为:
*i == value对于find
...

返回Ei[ firstlast范围内的第一个迭代器如果找不到这样的迭代器,则返回truelast

由于i在[ a.begin()+6a.begin()+3范围内没有适用的迭代器*i == 8,因此std::find返回a.begin()+3

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章