博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
转载:STL常用容器的底层数据结构实现
阅读量:5252 次
发布时间:2019-06-14

本文共 837 字,大约阅读时间需要 2 分钟。

转载至: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表,无序,可重复

 

转载于:https://www.cnblogs.com/yichengming/p/11175421.html

你可能感兴趣的文章
Item 9: Avoid Conversion Operators in Your APIs(Effective C#)
查看>>
深入浅出JavaScript(2)—ECMAScript
查看>>
STEP2——《数据分析:企业的贤内助》重点摘要笔记(六)——数据描述
查看>>
ViewPager的onPageChangeListener里面的一些方法参数:
查看>>
Jenkins关闭、重启,Jenkins服务的启动、停止方法。
查看>>
CF E2 - Array and Segments (Hard version) (线段树)
查看>>
Linux SPI总线和设备驱动架构之四:SPI数据传输的队列化
查看>>
SIGPIPE并产生一个信号处理
查看>>
CentOS
查看>>
Linux pipe函数
查看>>
java equals 小记
查看>>
爬虫-通用代码框架
查看>>
2019春 软件工程实践 助教总结
查看>>
YUV 格式的视频呈现
查看>>
Android弹出框的学习
查看>>
现代程序设计 作业1
查看>>
在android开发中添加外挂字体
查看>>
Zerver是一个C#开发的Nginx+PHP+Mysql+memcached+redis绿色集成开发环境
查看>>
多线程实现资源共享的问题学习与总结
查看>>
Learning-Python【26】:反射及内置方法
查看>>