最近在作一些leetcode的题,有时选择了用C++来写,离不开一些C++容器的使用。因而总结一下C++容器。java
vector<int> V;
V.push_back(1);
V.push_back(2);
vector<int>().swap(V);
//或者 V.swap(vector<int>());
复制代码
deque支持双端插入数据。deque的内存空间分布是小片的连续,小片间用链表相连,实际上内部有一个map的指针。deque空间的从新分配要比vector快,从新分配空间后,原有的元素是不须要拷贝的。数组
支持常数时间从容器任何位置插入和移除元素的容器。不支持快速随机访问。它一般实现为双向链表。函数
map是一种关联容器,该容器用惟一的关键字来映射相应的值,即具备key-value功能。map内部自建一棵红黑树(一种自平衡二叉树),这棵树具备数据自动排序的功能,因此在map内部全部的数据都是有序的,以二叉树的形式进行组织。ui
queue是一个队列,实现先进先出功能。queue是在deque的基础上封装的。spa
stack是实现先进后出的功能,和queue同样,也是内部封装了deque。3d
第一个图为简化图(其中粗线部分是重点的容器),第二个图为完整容器分类图指针