STL 常用容器的底层数据结构
STL 常用容器的底层数据结构实现
1.vector 底层数据结构为数组 ,支持快速随机访问
2.list 底层数据结构为双向链表,支持快速增删
3.deque 底层数据结构为一个中央控制器和多个缓冲区,详细见STL源码剖析P146,支持首尾(中间不能)快速增删,也支持随机访问
deque是一个双端队列(double-ended queue),也是在堆中保存内容的.它的保存形式如下:
[堆1] --> [堆2] -->[堆3] --> …
每个堆保存好几个元素,然后堆和堆之间有指针指向,看起来像是list和vector的结合品.
4.stack 底层一般用list或deque实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时
5.queue 底层一般用list或deque实现,封闭头部即可,不用vector的原因应该是容量大小有限制,扩容耗时
(stack和queue其实是适配器,而不叫容器,因为是对容器的再封装)
6.priority_queue 的底层数据结构一般为vector为底层容器,堆heap为处理规则来管理底层容器实现
7.set 底层数据结构为红黑树,有序,不重复
8.multiset 底层数据结构为红黑树,有序,可重复
9.map 底层数据结构为红黑树,有序,不重复
10.multimap 底层数据结构为红黑树,有序,可重复
11.hash_set 底层数据结构为hash表,无序,不重复
12.hash_multiset 底层数据结构为hash表,无序,可重复
13.hash_map 底层数据结构为hash表,无序,不重复
14.hash_multimap 底层数据结构为hash表,无序,可重复
STL 常用容器的底层数据结构相关推荐
- STL 常用容器的底层数据结构实现
1.vector 底层数据结构为数组 ,支持快速随机访问 2.list 底层数据结构为双向链表,支持快速增删 3.deque 底层数据结构为一个中央控制器和 ...
- 16 STL - 常用容器
本篇博客是根据黑马程序员视频整理,仅供学习使用. 如果这篇文章对你有帮助的话,请不要吝啬一键三连. 16 STL - 常用容器 16.1 string容器 16.1.1 string基本概念 本质: ...
- STL常用容器——deque容器的使用
文章目录 STL常用容器--deque容器的使用 1.deque 容器简介 2.deque容器的构造函数 3.deque的赋值操作 4.deque大小操作 5.deque容器添加和删除元素 6.deq ...
- STL容器的底层数据结构
本文部分内容转自此博客 目录 vector list deque stack queue heap priority_queue set map multiset/multimap 哈希表hashta ...
- 【C++】STL常用容器总结之十二:string类
13.string类 声明 string类本不是STL的容器,但是它与STL容器有着很多相似的操作,因此,把string放在这里一起进行介绍. 之所以抛弃char*的字符串而选用C++标准程序库中的s ...
- 【模板】数据结构之STL常用容器
标准模板库(Standard Template Library,STL)是惠普实验室开发的一系列软件的统称.它是由Alexander Stepanov.Meng Lee和David R Musser在 ...
- C++中STL常用容器的优点和缺点
我们常用到的STL容器有vector.list.deque.map.multimap.set和multiset,它们究竟有何区别,各自的优缺点是什么,为了更好的扬长避短,提高程序性能,在使用之前需要我 ...
- STL常用容器大致对比
1.vector vector是一种动态数组,在内存中具有连续的存储空间,支持快速随机访问.由于具有连续的存储空间,所以在插入和删除操作方面,效率比较慢.vector有多个构造函数,默认的构造函数是构 ...
- 【C++】STL常用容器总结之五:双端队列deque
6.双端队列deque 所谓的deque是"double ended queue"的缩写,双端队列不论在尾部或头部插入元素,都十分迅速.而在中间插入元素则会比较费时,因为必须移动中 ...
最新文章
- ros自带package在哪里_【ROS】创建ROS功能包(ROS package)
- 清华大学郑莉c++答疑
- 【转载】DRuid 大数据分析之查询
- javascript自定义startWith()和endWith()方法
- 基于哈夫曼编码完成的文件压缩及解压
- PostgreSQL on Linux 最佳部署指南
- axios创建实例对象发送ajax请求_解决一个网页请求多个服务器场景---axios工作笔记009
- 【转】Android android listview的HeadView左右切换图片(仿新浪,网易,百度等切换图片)...
- Android开发笔记(一百六十一)NFC近场通信
- 2016 Multi-University Training Contest 1 T4
- JavaScript jQuery bootstrap css ajax
- 给闪讯加装路由器的一个简单方法
- 计算机鼠标滚轮不流畅,鼠标滚轮不灵敏怎么办_鼠标中间的滚轮不灵敏了如何解决...
- word把选择答案弄到题目里_将Word解答中的答案项批量填入题干
- matlab中龙贝格公式,龙贝格求积公式matlab
- GPON(计算机网络相关)
- [生存志] 第16节 历代大事件概览 三国
- 192.168.1.0/24
- airpods二代降噪吗_2020年苹果无线蓝牙耳机AirPods/Airpods Pro选购指南和使用技巧 | 10月更新...
- 时间序列模型(ARIMA和ARMA)完整步骤详述