我在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
不,这不是错误。它完全符合标准定义:
令E为:
—*i == value
对于find
,
...返回:E为
i
[first
,last
)范围内的第一个迭代器。如果找不到这样的迭代器,则返回。true
last
由于i
在[ a.begin()+6
,a.begin()+3
)范围内没有适用的迭代器*i == 8
,因此std::find
返回a.begin()+3
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句