如何识别向量迭代器是否已到达向量的末尾?

Din*_*aur 3 c++ iterator vector

我有一个整数向量,我希望我的迭代器指向我想要的数字(称之为'test').

vector<int> vec;
void find(std::vector<int>::iterator iter, int test)
{
    if((*iter)!=test){ ++iter;}
}
Run Code Online (Sandbox Code Playgroud)

这有时是有问题的,因为它可能会触及向量的末尾(如果'test'不在向量中)并且我将遇到错误.

无论如何,我可以执行类似的事情

if(iter!=vec.end())
Run Code Online (Sandbox Code Playgroud)

并停止迭代而不在函数中指定我的向量?谢谢!

jua*_*nza 8

您可以采用标准库方法并将一对迭代器传递给函数:

template <typename Iterator>
void foo(Iterator begin, Iterator end,
         typename std::iterator_traits<Iterator>::value_type test)
{
  Iterator it = begin;
  ....
  if (iterator != end) { ... }
}
Run Code Online (Sandbox Code Playgroud)

然后你必须找出一个算法来找到指向值等于的元素的迭代器test.或者只是打电话给std::find你的功能.

auto it = std::find(vec.begin(), vec.end(), test);
if (it != vec.end()) { .... }
Run Code Online (Sandbox Code Playgroud)