array |
数组 |
随机读改 O(1) |
无序 |
可重复 |
支持随机访问 |
vector |
数组 |
随机读改、尾部插入、尾部删除 O(1);头部插入、头部删除 O(n) |
无序 |
可重复 |
支持随机访问 |
deque |
双端队列 |
头尾插入、头尾删除 O(1) |
无序 |
可重复 |
一个中央控制器 + 多个缓冲区,支持首尾快速增删,支持随机访问 |
forward_list |
单向链表 |
插入、删除 O(1) |
无序 |
可重复 |
不支持随机访问 |
list |
双向链表 |
插入、删除 O(1) |
无序 |
可重复 |
不支持随机访问 |
stack |
deque / list |
顶部插入、顶部删除 O(1) |
无序 |
可重复 |
deque 或 list 封闭头端开口,不用 vector 的原因应该是容量大小有限制,扩容耗时 |
queue |
deque / list |
尾部插入、头部删除 O(1) |
无序 |
可重复 |
deque 或 list 封闭头端开口,不用 vector 的原因应该是容量大小有限制,扩容耗时 |
priority_queue |
vector + max-heap |
插入、删除 O(log2n) |
有序 |
可重复 |
vector 容器+heap 处理规则 |
set |
红黑树 |
插入、删除、查找 O(log2n) |
有序 |
不可重复 |
|
multiset |
红黑树 |
插入、删除、查找 O(log2n) |
有序 |
可重复 |
|
map |
红黑树 |
插入、删除、查找 O(log2n) |
有序 |
不可重复 |
|
multimap |
红黑树 |
插入、删除、查找 O(log2n) |
有序 |
可重复 |
|
unordered_set |
哈希表 |
插入、删除、查找 O(1) 最差 O(n) |
无序 |
不可重复 |
|
unordered_multiset |
哈希表 |
插入、删除、查找 O(1) 最差 O(n) |
无序 |
可重复 |
|
unordered_map |
哈希表 |
插入、删除、查找 O(1) 最差 O(n) |
无序 |
不可重复 |
|
unordered_multimap |
哈希表 |
插入、删除、查找 O(1) 最差 O(n) |
无序 |
可重复 |
|