1.问题描述:
1.1初始化:
1.2插入操作:
结果:
输出正确;但迭代器指向最后一个插入区间错误。应该时200,2,3;输出却为4,100,22。
1.3删除操作:
结果:
应该删除4,却误删了10;后续也出错。
2.原因:deque的大小发生变化时(头尾操作一般不会引起),所有现有的迭代器可能会失效。
(ps:更为详细底层的原因暂不清楚,比如中控内存分配策略等等)
3.解决办法:使用insert或erase对deque中间的元素进行插入或删除时,操作完成后应该重新获取迭代器。
3.1插入操作:
该案列插入操作结果正确,可以翻看删除操作的解决做法。
3.2删除操作:
it1=d1.begin()即为重新获取迭代器
结果:
正确。