deque的迭代器失效

插入头尾:迭代器全部失效但是引用不失效

删除头尾:被删除的元素迭代器和引用失效

插入和删除中间:迭代器和引用全部失效

 

其中插入头尾操作引用不失效的原因是,deque由一个map和连续数组组成,其中map是指向数组的指针即二级指针,当插入头尾时,如果内存不够,会①复制原map的信息②申请新的连续空间作为map③存入旧的map信息,然后再插入新的数据。而deque的迭代器中存放着cur(当前数组的位置)firstend(当前map节点的首位地址)和node(当前map的节点地址),所以由于map的从新分配,迭代器的node失效,但是原map指向的连续数组并没有从新分配。

posted @ 2022-01-17 23:39  放不下的小女孩  阅读(329)  评论(0编辑  收藏  举报