顺序容器对比
| 容器 | 随机访问 | 插入/删除(中间) | 插入/删除(末尾) | 适用场景 |
|---|---|---|---|---|
vector | O(1) | O(n) | 均摊 O(1) | 频繁随机访问,尾部增删 |
deque | O(1) | O(n) | O(1) 首尾 | 需要头尾操作 |
list | O(n) | O(1) | O(1) | 频繁中间插入/删除 |
forward_list | O(n) | O(1) | O(1) | 单向链表,节省内存 |
关联容器
有序(红黑树):
set/multiset:有序去重/可重复map/multimap:键值对有序
无序(哈希表):
unordered_set/unordered_multisetunordered_map/unordered_multimap
选择原则
- 默认用
vector,除非有明确理由。 - 频繁在头部插入,用
deque。 - 频繁在中间插入,用
list。 - 需要快速查找,用
unordered_map(平均 O(1)),但注意哈希冲突。 - 需要有序遍历,用
map。
// 缓存场景:使用 unordered_map 快速查找
std::unordered_map<std::string, User> user_cache;
// 排行榜:使用 map 自动排序
std::map<int, std::string> score_rank;选对容器,性能翻倍。
