📅  最后修改于: 2023-12-03 15:24:08.351000             🧑  作者: Mango
unordered_map
是一个用于存储键值对的容器,可以在 $O(1)$ 的时间内支持插入、访问、删除等操作。在使用 unordered_map
时,我们有时需要修改已经存在的键的值,本文将介绍如何在 C++ 中实现这一功能。
如果要修改 unordered_map
中某个键的值,可以使用下标运算符 []
。例如,给定一个 unordered_map<int, string>
,我们希望将键为 1
的值修改为 "hello"
,可以这样写:
unordered_map<int, string> myMap{{1, "world"}, {2, "foo"}};
myMap[1] = "hello";
这样,myMap
中键为 1
的值就被修改为了 "hello"
。如果键不存在,该操作会自动插入一个新的键值对。
在修改 unordered_map
中键的值之前,有必要先检查该键是否已经存在。可以使用 count
或 find
方法来实现。例如,判断 myMap
中是否存在键为 1
的值:
unordered_map<int, string> myMap{{1, "world"}, {2, "foo"}};
if (myMap.count(1)) {
// 键为 1 的值已经存在
myMap[1] = "hello";
} else {
// 键为 1 的值不存在,可以插入一个新的键值对
myMap.emplace(1, "hello");
}
上述代码中,count
方法返回键为 1
的值在 myMap
中出现的次数,如果大于 0
,说明该键已经存在。find
方法返回一个指向键为 1
的值的迭代器,如果该键不存在,则返回 myMap.end()
。
本文介绍了如何在 C++ 中实现 unordered_map
中修改键值的功能,即使用下标运算符 []
实现修改操作,并使用 count
或 find
方法实现键是否存在的检查。当我们需要频繁修改 unordered_map
中的键值时,这些方法可以帮助我们更高效地完成任务。