std::list<CPoint>::iterator iter= vertices.end();
CPoint point = *(iter+1);
在这种情况下,我尝试将(iter-1)
or的值分配给变量(iter+1)
。为什么它不起作用?而iter++
或iter--
工作。
简单地说,这些操作不是iterator
定义的一部分。您可以使用该std::advance()
功能。
显然,operator+(int)
可以按原样覆盖 来执行operator++()
此操作,但可能不是,因为不能保证此操作具有恒定的复杂性,并且类似的语法(iter + n)
可能会提出其他建议。
来自advance
:
复杂性:线性。但是,如果
InputIt
另外满足 的要求RandomAccessIterator
,复杂度是不变的。