c++ - 同时访问列表中的元素及其后继元素

标签 c++ list iterator

我有一个列表,在对其进行迭代时,我想同时访问迭代器中的元素和迭代器+1 中的后续元素。这是我的尝试:

std::list<Team*> teamlist = league.GetTeamMembers();
for (std::list<Team*> ::iterator iterator = teamlist.begin(); iterator !=   teamlist.end(); std::advance(iterator,2))
{
  match(*(*iterator), *(*(++iterator)));
}

match 函数对迭代器没有任何作用,它只是从中获取团队的一些值来计算匹配结果。

但是++iterator 不起作用,因为 matchfunction 中的元素仍然相同。我该怎么做?

最佳答案

在同一次传递中传递迭代器并在迭代器上操作(如迭代器的增量)会导致未定义的行为。有一些概念,例如 sequence points ,您在执行此类操作时应该注意这一点。

此外,您可以查看this链接也。我建议你在传递给函数之后移动运算符的增量。那么它应该可以正常工作。

关于c++ - 同时访问列表中的元素及其后继元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22453505/

相关文章:

c++ - 定义不同容器的功能

c++ - 多维数组中的数组偏移计算(列与行主要)

c++ - 应用程序缓冲区和系统缓冲区有什么区别

python - (无意中)在遍历列表时跳过项目

c - 使用指针访问结构成员

javascript - 如何在 JavaScript 中使自定义迭代器接口(interface)可迭代

c++ - 编译器如何检测内存损坏

c++ - 当我从常量引用调用方法时程序失败

python - 为什么 n=[1,2,3,4,5,6,7,8],n[ :6:-2] is [8] in Python?

r - 创建一个 data.frame,其中一列是一个列表