STL
STL 标准模板库 是 “容器”和“算法”的集合。
1、组成部分:容器、迭代器、空间配置器、配接器、算法、仿函数。
2、对常用的容器以及容器适配器总结如下表:
一、容器分类
-
顺序容器:
向量vector
列表list
双队列deque -
容器适配器(特殊的容器):
栈stack
队列queue
优先队列priority_queue -
关联容器:
映射map
多重映射multimap
集合set
多重集合multiset
二、顺序容器分析总结
另外,对于扩容的两个函数我进行了如下分析总结:
vector<int> vec;
int new_size = 10;
vec.resize(new_size);
//1、new_size < vec.size() :调用erase(begin() + _Newsize, end())删除多余元素
//2、new_size > vec.size() :保留原来元素,并将空余元素初始化为0
vec.reserve(new_size);
//1、new_size < vec.size() :保留原来元素,不进行操作
//2、new_size > vec.size() :调用_Reallocate仅开辟空间
三、容器适配器
容器适配器,实质上是对容器的再封装,通过定义新的操作接口,来适应基础的容器类型。
1、底层数据结构以及原因分析
-
stack(push/pop/empty/size/top)
底层数据结构:deque
原因:
LIFO的特点,将deque头部端口封闭即可构成stack;
deque内存动态开辟性能高。 -
queue(push/pop/empty/size/front/back)
底层数据结构:deque
原因:
FIFO的特点,将deque头部入口和尾部出口封闭即可构成queue;
deque内存动态开辟性能高。 -
priority_queue(push/pop/empty/size/top)
底层数据结构:vector
原因:
默认大根堆,只根结点有序,即top()。