0
std::list<CPoint>::iterator iter= vertices.end();
CPoint point = *(iter+1); 

在这种情况下,我尝试将(iter-1)or的值分配给变量(iter+1)。为什么它不起作用?而iter++iter--工作。

4

1 回答 1

2

简单地说,这些操作不是iterator定义的一部分。您可以使用该std::advance()功能。

显然,operator+(int)可以按原样覆盖 来执行operator++()此操作,但可能不是,因为不能保证此操作具有恒定的复杂性,并且类似的语法(iter + n)可能会提出其他建议。

来自advance

复杂性:线性。但是,如果InputIt另外满足 的要求RandomAccessIterator,复杂度是不变的。

于 2013-01-12T10:12:26.763 回答