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

时间:2019-06-12 02:13:32

标签: c++ stl find

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

1 个答案:

答案 0 :(得分:1)

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

来自[alg.find]

  

E 为:
    — *i == value的{​​{1}},
    ...

     

返回:范围为{{{1},find)的第一个迭代器i,其中 E 为{{1 }}。如果找不到这样的迭代器,则返回first

由于在last成立的[truelast)范围内没有迭代器i,因此a.begin()+6返回a.begin()+3