cpp-stl-容器对比

124 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

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创建了一个排序队列,内部用二叉堆实现