c++ - 递增迭代器 C++

标签 c++ iterator increment

我的问题如下:我使用迭代器,我想将每个元素与下一个元素进行比较。原型(prototype)如下所示,如何增加迭代器才能进行比较? 另外,我怎样才能为这种情况设置适当的条件?我的意思是如何指向最后一个元素,而不是像 end() 函数那样指向最后一个元素之后的下一个元素:

std::vector<T>::const_iterator it;
std::vector<T>::const_iterator it2;
for (it = set.begin(), it != set.end(); it++)
{
  // some things happen
  if ( final == it )
  {
     if ( it != set.end()-1 ) // how to write properly condition?
     {
        it2 = it + 1; //how to assign the next here?
        if (...)//some condition
        {
          if ( it->func1() - it2->func1()) < 20 ) //actual comparison of two consecutive element values
            // do something
        }
      }
   }
}

最佳答案

C++11 中使用函数 std::next()std::prev() .

您的代码可能会变成:

// before
it != std::set.end()-1

// after
it != std::prev(set.end())

// before
it2 = it + 1;

// after
it2 = std::next(it);

对于非 vector 容器也是如此,例如 map、set 或其他容器。

注意:在 std::next(it) 之后,“it”迭代器保持不变!

注意 2:使用 it2 = std::next(it,n); 根据需要递增。

关于c++ - 递增迭代器 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14832971/

相关文章:

c++ - SFML 将 txt 文件中的图像加载到 vector 中只加载最后一张图像

c# - 找出给定长度的所有可能单词的好方法是什么

python - 在 Python 中以 8 个字符 block 的形式迭代字符串

performance - for 循环 : why is i++ slower than i = i + 1 in swift

Perl - 三元运算符中的增量值

java - 这里发生了什么 : sum += i++;?

c++ - 试图从消息 c++ mfc 返回值

c++ - 在保留类名的同时弃用类模板的正确程序是什么?

c++ - Visual C++ 上的 BoxPlot 制图

java - 如何确定 ArrayList 迭代器接下来将返回的对象类型?