c++用STL的容器和算法find_if实现名表表示和查找功能。
时间: 2023-11-22 18:56:41 浏览: 42
假设我们要实现一个名表,其中每个元素包括姓名和电话号码。我们可以使用STL中的vector容器来存储这些元素,其中每个元素是一个pair类型,包含姓名和电话号码。
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
int main()
{
// 姓名和电话号码存储在pair中
typedef pair<string, string> record;
vector<record> phonebook;
// 添加元素
phonebook.push_back(make_pair("Alice", "123456"));
phonebook.push_back(make_pair("Bob", "234567"));
phonebook.push_back(make_pair("Charlie", "345678"));
// 查找元素
string name = "Bob";
vector<record>::iterator it = find_if(phonebook.begin(), phonebook.end(), [name](const record& r){ return r.first == name; });
if (it != phonebook.end())
{
cout << "姓名:" << it->first << " 电话号码:" << it->second << endl;
}
else
{
cout << "未找到该姓名" << endl;
}
return 0;
}
```
在上面的代码中,我们定义了一个名为record的pair类型来存储每个元素,然后使用vector容器存储所有元素。添加元素使用push_back方法,查找元素使用find_if算法,其中使用lambda表达式来判断是否找到指定姓名的元素。
需要注意的是,上面的代码只能查找一个姓名,如果要查找多个姓名,则需要使用for_each算法来遍历所有元素,然后使用lambda表达式来判断是否是指定姓名的元素。