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
删除时,指向该删除节点的迭代器失效