【C++ Primer备忘录】习题10.18
来源:互联网 发布:360淘宝装修平台 编辑:程序博客网 时间:2024/06/11 10:39
习题10.18
定义一个map对象,其元素的键是家族姓氏,值是存储该家族孩子名字的vector对象。为这个map插入至少6个条目。通过基于家族姓氏的查询检查你的程序,查询应输出该家族所有孩子的名字。
#include <iostream>#include <string>#include <map>#include <vector>#include <utility>using namespace std;typedef vector<string> vstring;int main(){map<string,vstring> family;string fname,cname,index; //用do while可以保证程序能正确分别输入的fname和cname do{cout<<"家庭姓氏:";cin>>fname; //chilren用来存储孩子的姓名,ret返回查询map中键为fname的值是否存在,如果存在就返回fname的迭代器,如果不存在返回family.end()vector<string> chilren;//这里开始用pair<map<string,vstring>,bool> ret = family.insert(make_pair(fname,chilren)); 但是错了,还没搞明白原因map<string,vstring>::iterator ret = family.find(fname); <span style="white-space:pre"></span>if(ret != family.end()){ //此处可扩展为如果fname存在则让玩家选择是否在该家庭内新增孩子cout<<"姓氏已存在!是否继续(Y/N):";cin>>index;if(index == "Y" || index == "y"){continue;cin.clear();}elsebreak;}else{cout<<"输入孩子姓名(Quit退出):";while(cin>>cname ){if(cname != "Quit"){cout<<"输入孩子姓名(Quit退出):";chilren.push_back(cname);}elsebreak;}family.insert(make_pair(fname,chilren));cin.clear();cout<<"是否继续(Y/N):";cin>>index;if(index == "Y" || index == "y"){continue;cin.clear();}elsebreak;}}while(cin);cin.clear();//查询cout<<"请输入要查询的家庭姓氏:";cin>>fname;map<string,vstring>::iterator ret = family.find(fname);if(ret != family.end()){cout<<"要查询的孩子为:";vector<string>::iterator ite=ret->second.begin();while(ite != ret->second.end())cout<<*ite++<<" ";}elsecout<<"没有您要查询的家庭!"<<endl; system("pause");}
10.19
对10.18做了拓展,使其vector存储一个pair对象来放孩子的姓名和生日
typedef vector< pair<string,string> > vstring;int main(){map<string,vstring> family;string fname,cname,index,birth;do{cout<<"家庭姓氏:";cin>>fname;vector< pair<string,string> > chilren;map<string,vstring>::iterator ret = family.find(fname);if(ret != family.end()){cout<<"姓氏已存在!是否继续(Y/N):";cin>>index;if(index == "Y" || index == "y"){continue;cin.clear();}elsebreak;}else{cout<<"输入孩子姓名和生日(ctrl+z退出):";while(cin>>cname>>birth ){cout<<"输入孩子姓名和生日:";chilren.push_back(make_pair(cname,birth));}//make_pair用的是()而不是<>..... family.insert(make_pair(fname,chilren));cin.clear();cout<<"是否继续(Y/N):";cin>>index;if(index == "Y" || index == "y"){continue;cin.clear();}elsebreak;}}while(cin);cin.clear();//查询cout<<"请输入要查询的家庭姓氏:";cin>>fname;map<string,vstring>::iterator ret = family.find(fname);if(ret != family.end()){cout<<"要查询的孩子为:";vector< pair<string,string> >::iterator ite=ret->second.begin();while(ite != ret->second.end()){cout<<(ite->first)<<" "<<(ite->second)<<endl;ite++;}}elsecout<<"没有您要查询的家庭!"<<endl;
0 0
- 【C++Primer备忘录】 习题10.25
- 【C++ Primer备忘录】习题10.18
- c++primer(第四版)习题10.18
- c++primer 习题9.12
- c++primer 习题9.35
- c++primer 习题9.36
- c++primer 习题9.18
- c++primer 习题9.20
- c++primer 习题9.42
- c++primer 习题9.43
- c++primer 习题9.26
- C++Primer习题6.12
- C++primer习题6.20
- C++Primer习题9.26
- C++Primer 习题9.38
- C++Primer 习题9.39
- C++Primer习题9.40
- C++Primer习题10.9
- 黑马程序员-->Java基础-->网络编程
- javascript三种正则匹配
- Read 系统调用在用户空间中的处理过程
- FPGA之基于FPGA的SPARK多核处理器设计(六)
- ADMM求解各种优化函数及Matalb例子
- 【C++ Primer备忘录】习题10.18
- Java代码中使用response.redirect(url)方法,无法获取到中文的解决方法
- hadoop 1.x 伪分布式部署及windows开发环境搭建
- Can not perform this action after onSaveInstanceState
- 给刚入校大学生的一封信
- How to Convert CER to DER
- php的一种hashCode方法
- 12.sleep() 和 wait() 有什么区别?
- 最短路算法(Floyd)