本系列博客计划每天抽时间对C++ 标准库STL中的容器进行总结归纳。
容器分为:序列式容器和关联式容器。
容器 | 底层数据结构 | 时间复杂度 | 有无序 | 可不可重复 | 其他 |
数组 | 随机读改 O(1) | 无序 | 可重复 | 支持快速随机访问 | |
数组 | 随机读改、尾部插入、尾部删除 O(1) | 无序 | 可重复 | 支持快速随机访问 | |
双向链表 | 插入、删除 O(1) | 无序 | 可重复 | 支持快速增删 | |
双端队列 | 头尾插入、头尾删除 O(1) | 无序 | 可重复 | 一个中央控制器 + 多个缓冲区,支持首尾快速增删,支持随机访问 | |
deque / list | 顶部插入、顶部删除 O(1) | 无序 | 可重复 | deque 或 list 封闭头端开口,不用 vector 的原因应该是容量大小有限制,扩容耗时 | |
deque / list | 尾部插入、头部删除 O(1) | 无序 | 可重复 | deque 或 list 封闭头端开口,不用 vector 的原因应该是容量大小有限制,扩容耗时 | |
vector + max-heap | 插入、删除 O(log2n) | 有序 | 可重复 | vector容器+heap处理规则 | |
红黑树 | 插入、删除、查找 O(log2n) | 有序 | 不可重复 |
| |
红黑树 | 插入、删除、查找 O(log2n) | 有序 | 可重复 |
| |
红黑树 | 插入、删除、查找 O(log2n) | 有序 | 不可重复 |
| |
红黑树 | 插入、删除、查找 O(log2n) | 有序 | 可重复 |
| |
hash_set | 哈希表 | 插入、删除、查找 O(1) 最差 O(n) | 无序 | 不可重复 |
|
hash_multiset | 哈希表 | 插入、删除、查找 O(1) 最差 O(n) | 无序 | 可重复 |
|
hash_map | 哈希表 | 插入、删除、查找 O(1) 最差 O(n) | 无序 | 不可重复 |
|
hash_multimap | 哈希表 | 插入、删除、查找 O(1) 最差 O(n) | 无序 | 可重复 |