使用http://www.cppreference.com/wiki/stl/deque/insert作为参考,我将值插入到特定位置的双端队列中。
例如,如果双端队列 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
我没有再次测试过这个或任何东西,花了这么多时间跟踪一个错误,只是为了在所有地方发现 insert() 的不一致行为,这很烦人。
与在任何其他位置相比,为什么 insert() 在最后的行为不同?还是我做错了什么?