c++ 判断 map key是否存在。不存在插入
时间: 2023-08-15 16:06:17 浏览: 292
在 C++ 中,我们可以使用 `std::map` 容器的 `find()` 函数来判断一个 key 是否存在于 map 中。如果 `find()` 函数返回的是 map 的 `end()` 迭代器,则说明该 key 不存在于 map 中。如果存在,则返回指向该 key 的迭代器。
下面是一个示例代码,演示了如何判断 map 中是否存在某个 key,如果不存在则插入该 key-value 键值对:
```c++
#include <iostream>
#include <map>
#include <string>
int main() {
std::map<std::string, int> myMap;
// 判断 key 是否存在
std::string key = "hello";
if (myMap.find(key) == myMap.end()) {
// key 不存在,插入 key-value 键值对
myMap.insert(std::make_pair(key, 1));
std::cout << "key \"" << key << "\" inserted" << std::endl;
} else {
// key 存在,打印对应的 value
std::cout << "key \"" << key << "\" exists, value is " << myMap[key] << std::endl;
}
// 再次尝试插入同一个 key,不会插入,只会更新 value
myMap.insert(std::make_pair(key, 2));
std::cout << "key \"" << key << "\" exists, value is " << myMap[key] << std::endl;
return 0;
}
```
在上面的示例代码中,我们创建了一个 `std::map` 对象 `myMap`,并尝试插入一个 key 为 `"hello"` 的键值对。首先,使用 `find()` 函数判断该 key 是否存在于 map 中,由于此时 map 是空的,因此 `find()` 函数返回的是 map 的 `end()` 迭代器,意味着该 key 不存在于 map 中。因此,我们使用 `insert()` 函数插入了 `"hello"` 和 `1` 两个值作为键值对。
接着,我们再次尝试插入同一个 key,这次由于该 key 已经存在于 map 中,因此 `insert()` 函数只会更新其对应的 value 值,不会插入新的键值对。最后,我们打印出该 key 对应的 value 值,发现其已经被更新为 `2`。
阅读全文