常见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 容器的实现原理的主要内容,如果未能解决你的问题,请参考以下文章

超详细STL之array容器使用及实现原理解析

STL常用算法的使用与实现举例

STL常用算法的使用与实现举例

C++初阶第十一篇——list(list常见接口的用法与介绍+list的模拟实现+list迭代器原理)

[ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解

STL关联容器