c++用STL的容器map和算法find_if实现名表表示和查找功能。
时间: 2023-11-27 13:54:36 浏览: 83
名表(也称字典)是一种用于存储键值对的数据结构,其中每个键都唯一对应一个值。在C++中,可以使用STL的map容器来实现名表表示和查找功能,同时使用find_if算法来查找指定的键值。
以下是一个使用map容器和find_if算法实现名表表示和查找功能的示例代码:
```c++
#include <iostream>
#include <map>
#include <algorithm>
#include <string>
using namespace std;
int main() {
// 创建一个名表,其中键是字符串类型,值是整数类型
map<string, int> name_table;
// 向名表中添加一些键值对
name_table["Tom"] = 18;
name_table["Alice"] = 20;
name_table["Bob"] = 22;
// 查找名字为Alice的年龄
string name = "Alice";
auto it = find_if(name_table.begin(), name_table.end(),
[&name](const pair<string, int>& p) { return p.first == name; });
if (it != name_table.end()) {
cout << "The age of " << name << " is " << it->second << endl;
} else {
cout << "No record found for " << name << endl;
}
// 查找名字为David的年龄
name = "David";
it = find_if(name_table.begin(), name_table.end(),
[&name](const pair<string, int>& p) { return p.first == name; });
if (it != name_table.end()) {
cout << "The age of " << name << " is " << it->second << endl;
} else {
cout << "No record found for " << name << endl;
}
return 0;
}
```
输出结果为:
```
The age of Alice is 20
No record found for David
```
在上面的代码中,我们首先创建了一个名表name_table,并向其中添加了三个键值对。然后,我们使用find_if算法查找名字为Alice和David的年龄,并输出结果。在查找时,我们使用lambda表达式来实现指定键值的匹配条件,即判断键是否等于指定的名字。如果找到了匹配的键值对,则输出对应的值;否则输出未找到记录的提示信息。
阅读全文