C++容器类插入和删除时迭代器的失效情况总结
2024-10-21 11:39:13
容器底层数据结构类型 | 包含的具体容器 | 内存分配特点 | insert操作后迭代器失效情况 | erase操作后迭代器失效情况 |
---|---|---|---|---|
数组型数据结构 | vector , string , deque , array |
元素分配在连续的内存中 | 如果插入后重新分配空间,则所有迭代器都会失效;如果插入后未重新分配空间,会使得插入点之后的元素向后移动,故插入点之后的迭代器全部失效 | 会使得删除点之后的元素向前移动,故删除点及其之后的迭代器全部失效 |
链表型数据结构 | list , forward_list |
元素分配在不连续的内存中 | 插入不会使得任何迭代器失效 | 指向删除点位置的迭代器失效,但是其他迭代器不会失效 |
树形数据结构 | map , set , multimap , multiset |
使用红黑树来存储数据 | 插入不会使得任何迭代器失效 | 指向删除点位置的迭代器失效,但是其他迭代器不会失效 |
哈希数据结构 | unordered_map , unordered_multimap , unordered_multiset , unordered_set |
使用哈希表来存储数据 | 插入不会使得任何迭代器失效 | 指向删除点位置的迭代器失效,但是其他迭代器不会失效 |
堆栈型数据结构 | stack , queue , priority_queue |
stack和queue底层一般用list或deque实现,priority_queue的底层数据结构一般为vector | 不支持迭代器 | 不支持迭代器 |
最新文章
- 线程私有数据和pthread_once
- 特殊约束From To
- php Hash Table(三) Hash Table初始化
- 史上最";恐怖";的12生肖图,绝对超猛
- 让sublime text 3默认新建GBK文件
- JavaScript 中的继承(读书笔记思维导图)
- 说说UI设计
- 超可爱 纯CSS3实现的小猪、小老鼠、小牛
- Unity3D中使用BMFont制作图片字体 (NGUI版)
- let 和 const 命令
- SpringBoot配置日志logback
- 多版本python及多版本pip使用
- [20181105]再论12c set feedback only.txt
- zabbix批量操作
- Tomcat/7.0.81 远程代码执行漏洞复现
- awk按顺序去除重复行
- PHP SMTP邮件发送(可加附件)
- 002.FTP配置项详解
- iOS AOP编程思想及实践
- 一维码Codabar简介及其解码实现(zxing-cpp)
热门文章
- 前端面试 CSS三大特性
- mysql基本命令(增,查,改,删)
- Centos7如何安装开源办公软件Libreoffice
- JQuery Ajax 发送请求成功后却接收不到任何响应数据问题
- make clean 和 make distclean区别-(转自秋水Leo)
- python 中 list 的append与extend区别
- js获取cookie数据并发送给服务端
- 记录: 解决 pycurl: libcurl link-time ssl backend (openssl) is different from compile-time ssl backend (none/other)
- VBScript学习第一天
- TensorFlow之keras.layers.Conv2D( )