C++ Primer 第10章 习题 10.19

来源:互联网 发布:数据库checks 编辑:程序博客网 时间:2024/06/01 14:38
//10.19.cpp//定义一个map对象为,其元素的键是家族姓氏,//而值则是vector对象,该vector对象存储pair类型的对象//pair对象记录每个孩子的名字和生日//进行基于家族姓氏的查询,输出该家族所有孩子的名字和生日#include<iostream>#include<map>#include<utility>#include<vector>#include<string>using namespace std;int main(){map<string,vector<pair<string,string> > > children;string surname,childName,birthday;//读入条目(家族姓氏及其所有孩子的名字和生日)do{cout<<"请输入家族姓氏(Ctrl-Z to end):"<<endl;cin>>surname;if(!cin)//读入结束break;//插入新条目vector<pair<string, string> > chd;pair<map<string,vector<pair<string,string> > >::iterator,bool> ret=children.insert(make_pair(surname,chd));if(!ret.second)//该家族姓氏已在map容器中存在{cout<<"repeated surname: "<<surname<<endl;continue;}cout<<"请输入该家族孩子的名字和生日(Ctrl-z to end):"<<endl;while(cin>>childName>>birthday){ret.first->second.push_back(make_pair(childName,birthday));}cin.clear();} while(cin);cin.clear();//使输入流从新有效//读入要查询的家族cout<<"请输入你要查询的家族姓氏:"<<endl;cin>>surname;//根据读入的家族姓氏进行查找map<string,vector<pair<string,string> > >::iterator iter;iter=children.find(surname);//输出查询结果if(iter==children.end())//找不到该家族姓氏cout<<" no this surname:"<<surname<<endl;else//找到该家族姓氏{cout<<"children\t\tbirthday"<<endl;//输出该家族所有孩子的名字和生日vector<pair<string,string> >::iterator it=iter->second.begin();while(it!=iter->second.end()){cout<<it->first<<"\t\t"<<it->second<<endl;it++;}} return 0; }

原创粉丝点击