unordered_map 查找
时间: 2023-09-29 17:02:31 浏览: 148
unordered_map 提供了多种方法进行查找操作。下面介绍几种常用的查找方法:
1. 使用 find() 函数:可以使用 unordered_map 的 find() 函数来查找指定的键。它返回一个指向键值对的迭代器。如果找到了指定的键,则返回指向该键值对的迭代器;如果未找到,则返回指向 unordered_map 结尾的迭代器(即 end() 迭代器)。
示例代码:
```cpp
std::unordered_map<std::string, int> myMap;
myMap["apple"] = 1;
myMap["banana"] = 2;
auto it = myMap.find("apple");
if (it != myMap.end()) {
std::cout << "找到了键为 'apple' 的键值对,值为:" << it->second << std::endl;
} else {
std::cout << "未找到键为 'apple' 的键值对" << std::endl;
}
```
2. 使用 count() 函数:可以使用 unordered_map 的 count() 函数来统计指定键的数量。它返回一个整数,表示指定键在 unordered_map 中出现的次数。由于 unordered_map 中的键是唯一的,所以返回的结果要么是 0(未找到),要么是 1(找到)。
示例代码:
```cpp
std::unordered_map<std::string, int> myMap;
myMap["apple"] = 1;
myMap["banana"] = 2;
if (myMap.count("apple") > 0) {
std::cout << "找到了键为 'apple' 的键值对" << std::endl; } else {
std::cout << "未找到键为 'apple' 的键值对" << std::endl; }
```
3. 使用 [] 运算符:可以使用 unordered_map 的 [] 运算符来直接访问指定键对应的值。如果指定键存在,则返回对应的值;如果指定键不存在,则会插入一个新的键值对,并返回默认构造的值(对于整数类型,默认为 0)。
示例代码:
```cpp
std::unordered_map<std::string, int> myMap;
myMap["apple"] = 1;
myMap["banana"] = 2;
int value = myMap["apple"];
std::cout << "键为 'apple' 的值为:" << value << std::endl;
```
需要注意的是,在使用 find() 函数和 count() 函数时,要先判断迭代器是否等于 end() 迭代器,以避免访问不存在的迭代器导致的错误。同时,在使用 [] 运算符时,如果指定键不存在,会插入一个新的键值对。因此,在使用之前最好先使用 count() 函数或 find() 函数进行判断,以确保键是否存在。
阅读全文