首页 > 解决方案 > 在 C++ 中查找函数

问题描述

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

标签: c++stlfind

解决方案


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

来自[alg.find]

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

返回: E所在i的范围 [ first, last)中的第一个迭代器。如果没有找到这样的迭代器,则返回。truelast

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


推荐阅读