我有一个列表,在对其进行迭代时,我想同时访问迭代器中的元素和迭代器+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/