std::map中find的使用方法
时间: 2023-10-24 09:49:11 浏览: 118
在C++的std::map中,find函数用于查找指定键的元素。它的使用方法如下:
```cpp
std::map<Key, Value> myMap;
// 使用find函数查找为key的元素
auto it = myMap.find(key);
// 检查是否找到了元素
if (it != myMap.end()) {
// 找到了元素
// 使用it指向的迭代器获取键值对
Key foundKey = it->first;
Value foundValue = it->second;
// 进行相应的操作
} else {
// 没有找到元素
// 进行相应的处理
}
```
在上述代码中,`myMap.find(key)`会返回一个迭代器,指向键为`key`的元素。如果找到了元素,则迭代器指向该元素;如果没有找到,则迭代器等于`myMap.end()`。
你可以通过解引用迭代器来获取键值对的值,其中`it->first`表示键,`it->second`表示值。
需要注意的是,`std::map`是按照键的顺序进行排序的,因此find函数的查找效率是比较高的。
相关问题
std::map::find
`std::map::find`是C++标准库中`std::map`容器提供的成员函数之一,用于在`std::map`中查找指定的键,并返回指向该键值对的迭代器。
以下是`std::map::find`函数的语法:
```cpp
iterator find (const key_type& key);
```
其中,`key_type`是`std::map`中键的数据类型。`key`是要查找的键。
以下是一个示例:
```cpp
#include <iostream>
#include <map>
int main() {
std::map<int, std::string> myMap;
myMap[1] = "One";
myMap[2] = "Two";
myMap[3] = "Three";
std::map<int, std::string>::iterator it = myMap.find(2);
if (it != myMap.end()) {
std::cout << "Key found! Value: " << it->second << std::endl;
} else {
std::cout << "Key not found!" << std::endl;
}
return 0;
}
```
在上述示例中,我们创建了一个`std::map<int, std::string>`类型的`myMap`对象,并插入了几个键值对。然后,我们使用`find`函数查找键为2的元素,并将返回的迭代器赋值给`it`。如果找到了键为2的元素,则输出相应的值;如果没有找到,则输出"Key not found!"。
运行程序时,输出结果为:
```
Key found! Value: Two
```
这表示在`myMap`中成功找到了键为2的元素,并输出了对应的值。
std::unordered_map find
std::unordered_map是C++标准库中的一个关联容器,它提供了一种键值对的映射关系。其中的find函数用于在unordered_map中查找指定的键,并返回一个指向该键值对的迭代器。
使用find函数的一般语法如下:
```cpp
auto iter = unordered_map_name.find(key);
```
其中,unordered_map_name是要进行查找的unordered_map对象的名称,key是要查找的键值。
如果找到了指定的键值对,则find函数返回一个指向该键值对的迭代器;如果未找到,则返回unordered_map的end迭代器。
以下是一个示例代码:
```cpp
#include <iostream>
#include <unordered_map>
int main() {
std::unordered_map<int, std::string> myMap = {{1, "apple"}, {2, "banana"}, {3, "orange"}};
auto iter = myMap.find(2);
if (iter != myMap.end()) {
std::cout << "Key found! Value: " << iter->second << std::endl;
} else {
std::cout << "Key not found!" << std::endl;
}
return 0;
}
```
输出结果为:
```
Key found! Value: banana
```