常见STL 容器的实现原理
Posted bcbobo21cn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常见STL 容器的实现原理相关的知识,希望对你有一定的参考价值。
1.array :固定大小的顺序容器,它们保存了一个以严格的线性顺序排列的特定数量的元素
2.vector动态数组:
原理:连续的内存空间
性能:查找删除与数组性能一样,增加元素引发扩容时会有性能压力,一般为当前大小的两倍,然后把原数组的内容拷贝过去,接着释放原来的空间
size()表示数组中元素个数有多少,capacity()表示数组有多大容量
3.list 链表:
原理:双向链表
性能:常量性能的增删,不支持随机访问
4.map, multimap:
原理:以Key建立的红黑树
5.set,multiset:
原理:红黑树
6.unordered_map:
所有无序容器的底层实现都是Hash Map
原理:序容器存储键值对时,会先申请一整块连续的存储空间,但此空间并不用来直接存储键值对,而是存储各个链表的头指针,我们称其为桶,各键值对真正的存储位置是各个链表的节点。
以上是关于常见STL 容器的实现原理的主要内容,如果未能解决你的问题,请参考以下文章
C++初阶第十一篇——list(list常见接口的用法与介绍+list的模拟实现+list迭代器原理)
[ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解