STL
包含13个模板类
<algorithm>、<deque>、<functional>、<iterator>、<vector>、<list>、<map>、
<memory>、<numeric>、<queue>、<set>、<stack>和<utility>
关联式容器:容器内的元素按照一定的规则放到适当的位置,插入元素时不能指定位置
序列式容器:元素在容器中的位置与元素值无关,插入元素时可以指定在容器中插入的位置
容器适配器:不支持任意一种迭代器
set(集合)–关联式容器
由节点组成的红黑树(元素有序且唯一)
集合:键是唯一的,值的类型必须与键相同
特点:查找的速度特别快(时间复杂度logN)
multiset(多重集合)–关联式容器
允许有重复的元素
多重集合:可以有多个相同的键
特点:和set一样查找速度快(时间复杂度logN)
map(映射)–关联式容器
由键值对组成的集合(元素按照key哈希组成红黑树)
映射:键不允许重复
特点:查找的时间复杂度(logN)
multimap(多重映射)–关联式容器
和map一样,区别是可以有相同的键
list(列表)–序列式容器
双向链表(内存不连续)
列表:可以在任意位置插入,删除
特点:时间复杂度为(n)
vector(向量)–序列式容器
可变大小数组(元素保存在一段连续的内存)
向量:唯一可以和标准C兼容的STL容器
特点:可以随机访问,时间复杂度(n)
dqueue(双向队列)–序列式容器
内存连续,可以随机访问元素
双向队列:在序列头部插入,删除时间复杂度(n)
stack(栈)–容器适配器
stack:是用vector/deque/list对象创建了一个先进后出容器
queue(队列)–容器适配器
queue:是用deque或list对象创建了一个先进先出容器
动态的分段连续空间组合而成,可以方便的扩充大小
操作:仅允许队尾和队首的操作
priority_queue(优先队列)–容器适配器
priority_queue:是用vector/deque创建了一个排序队列,内部用二叉堆实现