http://www.cppreference.com/wiki/stl/deque/insertを参照として使用して、特定の場所で両端キューに値を挿入していました。
たとえば、deque A が次の場合:
a, b, d, e, g
d を指すイテレータを使用すると、次のことができます。
A.insert(iter, c); // insert val c before loc iter
//deque is now a, b, c, d, e, g
iter はまだ d を指しています。ただし、 iter が g を指す場合、最後の要素:
A.insert(iter, f);
//deque is now a, b, c, d, e, f, g
しかし iter は f を指すようになりました!!
私の現在の回避策は次のとおりです。
iter = A.insert(loc, val); // point iterator to element that was inserted before loc
iter++; // point iter back to loc
私はこれをもう一度テストしたことはありません。バグを追跡するのに非常に多くの時間を費やして、すべての場所のstlでinsert()の一貫性のない動作を発見するのは面倒でした。
最後に、他の場所と比較して、insert() の動作が異なるのはなぜですか? それとも私が何か間違ったことをしたのですか?