欢迎来到程序员中文网!

首页 Linux Mysql C++ Python PHP JavaScript 资源下载 动态 开源推荐
我要投稿 投诉建议

C++ STL 容器选择指南:vector、list、map 与 unordered_map

时间:2026年08月12日 04:46:50 浏览:1

顺序容器对比










































容器 随机访问 插入/删除(中间) 插入/删除(末尾) 适用场景
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_multiset

  • unordered_map / unordered_multimap


选择原则



  1. 默认用 vector,除非有明确理由。

  2. 频繁在头部插入,用 deque

  3. 频繁在中间插入,用 list

  4. 需要快速查找,用 unordered_map(平均 O(1)),但注意哈希冲突。

  5. 需要有序遍历,用 map


// 缓存场景:使用 unordered_map 快速查找
std::unordered_map<std::string, User> user_cache;

// 排行榜:使用 map 自动排序
std::map<int, std::string> score_rank;

选对容器,性能翻倍。