std::list<CPoint>::iterator iter= vertices.end();
CPoint point = *(iter+1);
(iter-1)そのような場合、変数にまたはの値を代入しようとしました(iter+1)。うまくいかないのはなぜですか?一方iter++またはiter--動作します。
簡単に言えば、これらの操作はiterator定義の一部ではありません。std::advance()そのために関数を使用できます。
明らかに、operator+(int)をそのままオーバーライドしてそれを行うことができますがoperator++()、おそらくそうではありません。なぜなら、この操作は一定の複雑さであることが保証されておらず、構文のようなもの(iter + n)はそうでないことを示唆している可能性があるからです。
からadvance:
複雑さ:線形。ただし、
InputItさらに の要件を満たしている場合RandomAccessIterator、複雑さは一定です。