我在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
答案 0 :(得分:1)
不,这不是bug。它完全符合标准定义:
让 E 为:
—*i == value
的{{1}},
...返回:范围为{{{1},
find
)的第一个迭代器i
,其中 E 为{{1 }}。如果找不到这样的迭代器,则返回first
。
由于在last
成立的[true
,last
)范围内没有迭代器i
,因此a.begin()+6
返回a.begin()+3