转载:STL常用容器的底层数据结构实现
2024-09-06 12:10:59
转载至:https://blog.csdn.net/qq_28584889/article/details/88763090
vector :底层数据结构为数组,支持快速随机访问
list:底层数据结构为双向链表,支持快速增删
deque:底层数据结构为一个中央控制器和多个缓冲区,支持首尾快速增删,也支持随机访问
deque是一个双端队列(double-ended queue),也是在堆中保存内容的,它的保存形式如下:
[堆1]-->[堆2]-->[堆3]-->...
每个堆保存好几个元素,然后堆和堆之间有指针指向,看起来像是list和vector的结合品
stack:底层一般用list或deque实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时
queue:底层一般用list或deque实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时
(stack和queue其实是适配器,而不叫容器,因为是对容器的再封装)
priority_queue:底层数据结构一般为vector为底层容器,堆heap为处理规则来管理底层容器实现。(所有容器中就priority_queue使用greater<int>()表示第一个元素最小的,小根堆)
set:底层数据结构为红黑树,有序,不可重复
multiset:底层数据结构为红黑树,有序,可重复
map:底层数据结构为红黑树,有序,不可重复
multimap:底层数据结构红黑树,有序,可重复
unorder_set:底层数据结构hash表,无序,不重复
unorder_multiset:底层数据结构为hash表,无序,可重复
unorder_map:底层数据结构为hash表,无序,不可重复
unorder_multimap:底层数据结构为hash表,无序,可重复
最新文章
- 解决EasyUI动态添加标签渲染问题
- How to Install JAVA 8 (JDK/JRE 8u111) on Debian 8 &; 7 via PPA
- 智者当借力而行, 借助Autodesk应用程序商店实现名利双收
- 【MyEcplise hibernate tools】hibernate tools的使用以及错误
- UML用例图(转载)
- Linux安装Weblogic9.2
- Android反编译APK
- AngularJs打造一个简易权限系统
- 获取radio的值
- 使用opencv实现自定义卷积
- unix命令自我总结
- Android Studio开发环境配置以及相关说明
- Python内置函数(39)——locals
- 一、Java和JavaScript
- NPOI 上传Excel功能
- linux系统下键盘按键的重新映射——xmodmap工具和xev工具
- Mybatis-PageHelper分页插件
- html-图像标签
- 基于jQuery悬停弹出遮罩显示按钮代码
- 20154312曾林 - Exp1 PC平台逆向破解
热门文章
- 用Stegsolve工具解图片隐写的问题
- bi工具是什么,如何选择?
- 基于Redis分布式BitMap的应用
- 矩池云上编译安装dlib库
- C语言之判断质数算法
- BUG | ValueError: Shape mismatch: The shape of labels (received (320,)) should equal the shape of logits except for the last dimension (received (64, 5)).
- JVM内存模型及GC机制
- 网络标准之:IANA定义的传输编码
- nginx lua模块常用的指令
- php 23种设计模型 - 代理模式