c++中map的insert遇见相同的key
时间: 2023-07-09 08:32:52 浏览: 105
在 C++ 中,当我们使用 map 的 insert() 函数插入一个已经存在的键值对时,如果该键已经存在,那么 insert() 函数不会插入这个键值对,而是保留原来的键值对不变。如果想要更新该键对应的值,可以使用下标操作符 [] 或者迭代器的赋值操作。
下面是一个示例代码:
```c++
#include <iostream>
#include <map>
int main() {
std::map<std::string, int> myMap = {{"apple", 1}, {"orange", 2}, {"banana", 3}};
// 插入一个不存在的键值对
myMap.insert({"grape", 4});
// 插入一个已经存在的键值对
myMap.insert({"apple", 5});
// 使用下标操作符 [] 更新键对应的值
myMap["orange"] = 6;
// 使用迭代器的赋值操作更新键对应的值
auto it = myMap.find("banana");
if (it != myMap.end()) {
it->second = 7;
}
// 输出 map 中的所有元素
for (auto& [key, value] : myMap) {
std::cout << key << ": " << value << std::endl;
}
return 0;
}
```
输出结果为:
```
apple: 1
banana: 7
grape: 4
orange: 6
```
在上面的代码中,我们首先插入了一个不存在的键值对 "grape": 4,然后插入了一个已经存在的键值对 "apple": 5,但是 map 中的 "apple" 的值并没有改变。接着使用下标操作符 [] 和迭代器的赋值操作更新了 "orange" 和 "banana" 对应的值,最后输出了 map 中的所有元素。
阅读全文