unordered_map是基于哈希表的C++关联容器,提供O(1)平均时间复杂度的查找、插入和删除操作,适用于无需排序的快速访问场景。

unordered_map 是 C++ STL 中提供的关联容器,用于存储键值对(key-value pairs),其底层基于哈希表实现,查找、插入和删除操作的平均时间复杂度为 O(1)。相比 map(基于红黑树,有序),unordered_map 无序但访问更快,适合需要快速查找的场景。
包含头文件与命名空间
使用 unordered_map 需要包含头文件 ,并使用 std 命名空间:
#include iostream>
#include
#include
using namespace std;
基本定义与初始化
声明一个 unordered_map 的格式为:
unordered_map map_name;
常见用法示例:
立即学习“C++免费学习笔记(深入)”;
unordered_map ageMap; // 键为字符串,值为整数
支持的初始化方式:
空初始化:直接定义后插入数据列表初始化:unordered_map ages = {{“Alice”, 25}, {“Bob”, 30}};
常用操作方法
以下是一些核心操作及对应函数:
插入元素: ageMap[“Charlie”] = 35; // 使用下标插入或更新ageMap.insert({“David”, 40}); // insert 方法插入 pairageMap.emplace(“Eve”, 28); // 原地构造,效率更高查找元素: auto it = ageMap.find(“Alice”); // 返回迭代器,找不到返回 end()判断是否存在:if (ageMap.count(“Bob”)) { /* 存在 */ }访问元素: cout // 直接通过键访问值(若键不存在会自动创建)更安全的方式是先 find 再访问,避免意外插入默认值删除元素: ageMap.erase(“Bob”); // 按键删除ageMap.erase(it); // 按迭代器删除遍历所有元素: for (const auto& pair : ageMap) {
cout } 获取大小与清空: ageMap.size(); // 元素个数ageMap.empty(); // 是否为空ageMap.clear(); // 清空所有元素
完整示例代码
下面是一个完整的小程序演示 unordered_map 的典型用法:
#include stream>
#include
#include
using namespace std;
int main() {
unordered_map studentAges = {
{“Alice”, 20},
{“Bob”, 22},
{“Charlie”, 19}
};
// 插入新元素
studentAges[“David”] = 21;
// 查找并输出 Bob 的年龄
auto it = studentAges.find(“Bob”);
if (it != studentAges.end()) {
cout second }
// 遍历输出所有学生信息
for (const auto& s : studentAges) {
cout }
return 0;
}
注意事项
键类型必须支持哈希函数。C++ 内置类型(如 int、string)已提供 hash 实现,自定义类型需重载 hash 函数或提供仿函数。不保证元素顺序,遍历时顺序可能每次不同。使用下标访问不存在的键会自动插入该键并用默认值初始化(如 int 为 0),需注意逻辑错误。多线程环境下需自行加锁保护,unordered_map 本身非线程安全。
基本上就这些。掌握 unordered_map 能显著提升查找效率,是算法题和工程开发中的常用工具。
以上就是c++++怎么使用unordered_map_c++中unordered_map的用法与示例解析的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1481852.html
微信扫一扫
支付宝扫一扫