vector迭代器失效问题

       因为自己搜的感觉讲的有点迷,就自己动手是了一下并讲下自己的理解,若有问题,还请各位大佬指正。

      

     首先是迭代器失效主要发生在push_back、insert、erase中。

    若在进行插入元素后未发生vector容量变化,理论上插入元素之后迭代器失效,进行erase之后同理。

    若插入元素后发生vector容量变化,则所有迭代器失效。

   

   insert和erase可以通过  it  = insert ()  或  it = erase()  来获取新的迭代器进行操作。其返回值都是删除位置原位置对应的迭代器。

按照之前所讲,应该不会报错才对啊,为什么push_back()导致了最后一个迭代器之前的元素失效了?  这主要是因为迭代器一开始说了容量50,但是因为push_back()导致了扩容。

只要把第二行注释解掉,让他先push_ back()一次就不会导致迭代器失效了。

这个也是因为insert插入导致了迭代器失效,解决方案如下:

在insert之后再次用it接受返回值。

那么是否插入元素在it后面就不会出现问题呢?

从中可以发现,确实如此,并且it一致返回对应的值1

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值