// 定义一个map对象,其元素的键是家族姓氏,而值则是存储该家族孩子名字的vector对象,为这
// 个map容器输入至少6个条目,通过基于家族姓氏的查询检测你的程序,查询应输出该家族所有孩子
// 的名字。
#include <iostream>
#include <map>
#include <vector>
#include <string>
using namespace std;
int main()
{
map< string, vector<string> > children;
string surname, childName;
// 读入条目(家族姓氏)及其所有孩子的名字
do
{
cout << "Enter surname(Ctrl+Z to end):" << endl;
cin >> surname;
if (!cin)
{
break;
}
// 插入新条目
vector<string> chd;
pair<map<string, vector<string> >::iterator, bool> ret =
children.insert(make_pair(surname, chd));
if (!ret.second) //该家族姓氏已在map容器中存在
{
cout << "repeated surname: " << surname << endl;
}
cout << "Enter children's name(Ctrl+z to end):" << endl;
while (cin >> childName) //读入该家族所有孩子的名字
ret.first->second.push_back(childName);
cin.clear();
} while (cin);
cin.clear(); // 使输入流重新有效
// 读入要查询的家族
cout << "Enter a surname to search:" << endl;
cin >> surname;
// 根据读入的家族姓氏进行查询
map< string, vector<string> >::iterator iter =
children.find(surname);
// 输出查询结果
if (iter == children.end()) // 找不到该家族姓氏
{
cout << "no this surname: " << surname << endl;
}
else
{
cout << "children " << endl;
// 输出该家族中所有孩子的名字
vector<string>::iterator it = iter->second.begin();
while (it != iter->second.end())
cout << *it++ << endl;
}
return 0;
}
关联容器范例
最新推荐文章于 2024-10-16 10:13:45 发布