C++ STL容器迭代器失效

vector

  • 1、插入(push_back)元素。end操作返回的迭代器失效
  • 2、插入(push_back)元素,若发生扩容,即capacity返回值有变化,则需重新加载整个容器,此时begin和end操作返回的迭代器都会失效。
  • 3、删除(erase、pop_back)元素,指向删除点的迭代器失效,后面的元素的迭代器也将失效。

qeque

  • 1、在deque容器首部和尾部插入元素不会使任何迭代器失效;
  • 2、在deque容器首部和尾部删除元素,只会使被删除元素的迭代器失效;
  • 3、在deque容器的其他位置删除或插入元素,该容器的所有迭代器都将失效;

list/set/map

  • 1、删除元素时,删除该节点的迭代器会失效;
  • 2、插入元素时,不是使迭代器失效;

当前迭代器失效时可用返回值,erase函数有返回值,返回下一个迭代器:iter =cont.erase(iter);

迭代器与指针

  • 1、迭代器不是指针,是类模板,通过重载->、++、–等指针的操作符封装指针,模拟指针的操作,表现的像指针;
  • 2、迭代器返回的是对象的引用;
  • 4、指针可以指向函数,迭代器不行,迭代器只能指向容器,指针能指向一些特殊的容器;
  • 2、指针是存放地址的变量;是一种特殊的迭代器;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值