unordered_map insert相同的key
时间: 2023-10-20 20:36:54 浏览: 106
在C++中,`std::unordered_map`是一种关联容器,它提供了键值对的存储和快速查找功能。当你尝试使用相同的键插入元素时,`std::unordered_map`的行为会有所不同,具体取决于你使用的插入函数。
如果你使用的是`insert()`函数,当插入一个已经存在的键时,新值不会覆盖旧值,并且插入操作不会生效。这是因为`std::unordered_map`要求每个键都是唯一的,因此如果你插入一个已经存在的键,它将被忽略。
以下是一个示例代码:
```cpp
#include <iostream>
#include <unordered_map>
int main() {
std::unordered_map<int, std::string> myMap;
myMap.insert({1, "value1"});
myMap.insert({2, "value2"});
auto result = myMap.insert({1, "new value"});
if (result.second) {
std::cout << "Insertion successful!" << std::endl;
} else {
std::cout << "Key already exists. Insertion failed." << std::endl;
}
for (const auto& pair : myMap) {
std::cout << pair.first << ": " << pair.second << std::endl;
}
return 0;
}
```
输出结果将是:
```
Key already exists. Insertion failed.
1: value1
2: value2
```
可以看到,当我们尝试插入一个已经存在的键时,插入操作失败并且容器中的键值对没有发生变化。
阅读全文