最近在做一些leetcode的题,有时选择了用C++来写,离不开一些C++容器的使用。于是总结一下C++容器。
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内部所有的数据都是有序的,以二叉树的形式进行组织。
queue是一个队列,实现先进先出功能。queue是在deque的基础上封装的。
stack是实现先进后出的功能,和queue一样,也是内部封装了deque。
第一个图为简化图(其中粗线部分是重点的容器),第二个图为完整容器分类图