在 C++ <algorithm>中查找函数

find function in c++ <algorithm>

本文关键字:查找 函数 gt algorithm lt C++      更新时间:2023-10-16

我在 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

不,这不是错误。 它完全遵循标准定义:

来自 [alg.find]

E 为:
*i == value for find
...

返回i E true 的 [firstlast ( 范围内的第一个迭代器。如果未找到此类迭代器,则返回last

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