2
4

2 回答 2

6

list迭代器不是随机访问,因此您无法+使用它们。它们是双向迭代器,因此您可以执行的唯一移动操作是--++。您可以复制并++在其上使用,也可以复制并使用std::advance(it, 1).

对于 C++11,它还std::next为您提供了it + 1,而您不必像其他人那样显式地制作命名副本。

于 2013-11-13T06:02:27.720 回答
5

list有双向迭代器,不支持operator +. 您可以在 C++11中使用std::advance或。std::next

for (list<Term>::iterator j = next(itr); j != final.end(); ++j)

或者

list<Term>::iterator j = itr;
advance(j, 1); // or ++j
for (; j != final.end(); ++j)
于 2013-11-13T06:02:45.443 回答