unordered_map是基于哈希表的C++关联容器,提供O(1)平均时间复杂度的查找、插入和删除操作,适用于无需排序的快速访问场景。
unordered_map是 C++ STL 中提供的关联容器,用于存储键值对(key-value pairs),其底层基于哈希表实现,查找、插入和删除操作的平均时间复杂度为 O(1)。相比map(基于红黑树,有序),unordered_map无序但访问更快,适合需要快速查找的场景。
包含头文件与命名空间使用 unordered_map 需要包含头文件
常见用法示例:
立即学习“C++免费学习笔记(深入)
”;
C函数速查手册(CHM版)
C函数速查手册(CHM版)
下载unordered_map
支持的初始化方式:
空初始化:直接定义后插入数据
列表初始化:
unordered_map
判断是否存在:
if (ageMap.count("Bob")) { /* 存在 */ }访问元素:cout << ageMap["Alice"];// 直接通过键访问值(若键不存在会自动创建)
更安全的方式是先 find 再访问,避免意外插入默认值删除元素:ageMap.erase("Bob");// 按键删除ageMap.erase(it);// 按迭代器删除遍历所有元素:for (const auto& pair : ageMap) {cout << pair.first << ": " << pair.second << endl;}获取大小与清空:ageMap.size();// 元素个数ageMap.empty();// 是否为空ageMap.clear();// 清空所有元素完整示例代码下面是一个完整的小程序演示 unordered_map 的典型用法:#include
不保证元素顺序,遍历时顺序可能每次不同。
使用下标访问不存在的键会自动插入该键并用默认值初始化(如 int 为 0),需注意逻辑错误。
多线程环境下需自行加锁保护,unordered_map 本身非线程安全。
基本上就这些。掌握 unordered_map 能显著提升查找效率,是算法题和工程开发中的常用工具。
