C++ STL中deque容器,插入和删除元素时造成迭代器失效——指向发生错乱

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()即为重新获取迭代器

结果:

正确。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值