用c++编程,6. 假如我们有个map对象是这么声明的: std::map<int, std::string> my_map; my_map.insert(std::make_pair(10, "china")); my_map.insert(std::make_pair(20, "usa")); my_map.insert(std::make_pair(30, "english")); my_map.insert(std::make_pair(40, "hongkong")); 插入值后我们想得到值为”english”的这条记录,要怎样写程序呢?请用find_if函数实现,并逐句解释代码
时间: 2024-03-30 19:33:57 浏览: 124
可以使用 `find_if` 算法来查找符合条件的元素。下面是使用 `find_if` 来查找值为 "english" 的元素的代码:
```c++
#include <iostream>
#include <map>
#include <algorithm>
int main() {
std::map<int, std::string> my_map;
my_map.insert(std::make_pair(10, "china"));
my_map.insert(std::make_pair(20, "usa"));
my_map.insert(std::make_pair(30, "english"));
my_map.insert(std::make_pair(40, "hongkong"));
auto it = std::find_if(my_map.begin(), my_map.end(), [](const auto& pair) {
return pair.second == "english";
});
if (it != my_map.end()) {
std::cout << "Key = " << it->first << ", Value = " << it->second << std::endl;
} else {
std::cout << "Not found" << std::endl;
}
return 0;
}
```
代码解释:
首先,我们使用 `std::find_if` 算法来查找符合条件的元素。它接受一个范围和一个谓词函数作为参数,并返回符合条件的元素的迭代器。这里,我们使用 lambda 表达式作为谓词函数,以查找值为 "english" 的元素。
lambda 表达式的语法是 `[capture list](parameter list) -> return type { function body }`。这里,我们使用捕获列表 `[]` 来捕获局部变量,参数列表为空,返回类型使用了 `auto` 推导,函数体使用了一个简单的比较操作,以查找值为 "english" 的元素。
如果找到了符合条件的元素,我们输出它的键和值,否则输出 "Not found"。
阅读全文