用stl的容器map和算法find_it实现名表表示和查找功能
时间: 2023-11-22 14:55:45 浏览: 90
stl容器map的使用
首先,我们需要了解一下`map`容器和`find`算法的基本用法。
`map`是一种关联式容器,它将键值对映射到值。它的查找复杂度为O(logN),因此非常适合用于大量数据的快速查找。在`map`中,所有的元素都是按照键值自动升序排序的。
`find`算法用于在序列中查找指定值,并返回一个指向该值的迭代器。如果未找到指定值,则返回一个指向序列末尾的迭代器。
接下来,我们可以通过`map`和`find`算法来实现名字表的表示和查找功能。以下是一个示例代码:
```cpp
#include <iostream>
#include <string>
#include <map>
#include <algorithm>
using namespace std;
int main()
{
// 声明一个名字表,键为字符串类型,值为整型
map<string, int> nameList;
// 添加一些名字和对应的编号
nameList["Tom"] = 1001;
nameList["Jerry"] = 1002;
nameList["Mickey"] = 1003;
nameList["Minnie"] = 1004;
// 查找名字为Tom的编号
string name = "Tom";
auto it = nameList.find(name);
if (it == nameList.end()) {
cout << "未找到名字为" << name << "的人" << endl;
} else {
cout << "名字为" << name << "的编号为" << it->second << endl;
}
// 查找名字为Donald的编号
name = "Donald";
it = nameList.find(name);
if (it == nameList.end()) {
cout << "未找到名字为" << name << "的人" << endl;
} else {
cout << "名字为" << name << "的编号为" << it->second << endl;
}
return 0;
}
```
在上面的代码中,我们首先声明了一个`map`容器`nameList`来存储名字和对应的编号。然后,我们添加了一些名字和编号。接下来,我们通过`find`算法来查找名字为Tom和Donald的编号,并输出查找结果。注意,当`find`算法返回的迭代器等于`end()`时,表示未找到指定的值。
阅读全文