C++ STL中迭代器失效问题

C++ STL中迭代器失效问题

其实,在我们学习过程中,C++ STL使我们必须要用的一个库,里面集成了很多的数据结构和算法,这些在我们写程序的时候,用的特别多。但是,使用这些,我们经常会出现一些问题,毕竟C++中内存的申请和释放都是程序员亲自去做的,所以说,在使用STL的时候,我们也会遇到很多问题,其中一个就是我们所谓的迭代器。


迭代器,其实我们用通俗的理解就是类似于我们使用指针去遍历数组,然后访问元素,而且迭代器类似于我们所谓的指针。
在STL中,我们一般分成这么几类:
1.序列容器:也就是把具有相同类型T的对象,用严格的线性组织到一起。当然,我们也可以认为是数组和链表的推广,我们一般说的序列容器有三种:
(1).vector(数组),提供快速随机访问。
迭代器在删除插入的时候会导致迭代器失效,因为内存重新的分配,导致迭代器失效。
(2).queue
1.在deque容器首部或者尾部插入元素不会使得任何迭代器失效。
2.在其首部或尾部删除元素则只会使指向被删除元素的迭代器失效。
3.在deque容器的任何其他位置的插入和删除操作将使指向该容器元素的所有迭代器失效。
(3).list
删除时,指向该删除节点的迭代器失效
2.关联容器:支持通过键来高效地查找和读取元素
(1)map
(2)set
删除时,指向该删除节点的迭代器失效


关联容器和顺序容器的本质差别在于:关联容器通过键(key)存储和读取元素,而顺序容器则通过元素在容器中的位置顺序存储和访问元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值