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,复杂度是不变的。