通过向量迭代以在C ++中进行比较

时间:2016-12-05 13:17:38

标签: c++ iterator

我正在尝试编写一个给定向量的程序,使用迭代器来比较向量的第一个和最后一个数,然后移入并比较下一个。我写了for循环来做到这一点,但我不确定如何使它一旦到达向量的中心就停止。

对于for循环,我有:

for (a = v.begin(), b = v.rbegin(); a != v.end(), b != v.rend(); a++, b++)

其中a是前向迭代器,b是后向迭代器。 我的假设是我需要改变for循环的条件,但我不确定是什么。

1 个答案:

答案 0 :(得分:1)

请注意,std::vector<T>::iteratorrandom-access iterator,表示已定义operator<

使用这个,并使用std::reverse_iterator<Iterator>::base()成员函数,我们可以将for循环重写为以下内容:

auto a = v.begin();
auto b = v.rbegin();
for (; a < b.base(); ++a, ++b)
{
  // Do stuff...
}