如何检查STL迭代器是否指向任何东西?

23 c++ iterator stl

可能重复:
C++检查迭代器是否有效的最佳方法

我想做这样的事情:

std::vector<int>::iterator it;
// /cut/ search for something in vector and point iterator at it. 
if(!it) //check whether found
    do_something(); 
Run Code Online (Sandbox Code Playgroud)

但是没有运营商!用于迭代器.如何检查迭代器是否指向任何东西?

Jam*_*kin 48

你不能.通常的习惯用法是将容器的结束迭代器用作"未找到"标记.这就是std::find回报.

std::vector<int>::iterator i = std::find(v.begin(), v.end(), 13);
if (i != v.end())
{
     // ...
}
Run Code Online (Sandbox Code Playgroud)

使用未分配的迭代器唯一可以做的就是为它赋值.

  • @Cătălin:这一切都是正确的,但我认为这超出了问题的范围.就像!(`not`)运算符只能使用有效或空指针,上面只能使用有效的迭代器(包括`end`迭代器). (2认同)