C++ primer 第五版 中文版 练习 11.14
题目:扩展你在11.2.1节练习(第378页)中编写的孩子姓到名的map,添加一个pair的vector,保存孩子的名和生日。
答:
注意:以下代码只是能保存一次输入,不是循环输入或者一次输入多个名到生日的pair,但也算是符合本题题意思。
/*
扩展你在11.2.1节练习(第378页)中编写的孩子姓到名的map,添加一个pair的vector,保存孩子的名和生日。
*/
#include <iostream>
#include <map>
#include <string>
#include <vector>
#include <utility>
using namespace std;
int main()
{
map<string, vector<string>> famliy = { { "wang", { "yan", "wei" } }, { "li", { "ke", "fei" } } };
string famliyname, name, birday;
vector<pair<string, string>> name_birday; //保存名和生日。
cout << "请输入姓、名和生日,以空格或者回车格开:";
cin >> famliyname >> name>>birday;
//根据关键字 “姓”来保存“名”。
famliy[famliyname].push_back(name);
//保存名到生日的pair到vector。
name_birday.push_back(make_pair(name, birday));
//输出保存的 姓到名的关联容器的内容
for (const auto &w : famliy)
{
cout << "家庭的姓为:" << w.first << " " << "有这些孩子的名:" << " ";
for (const auto &a : w.second)
cout << a << "、";
cout << endl;
}
//输出保存的 姓到名的pair的内容。
for (const auto &n : name_birday)
cout <<"名字为:"<< n.first << " " <<"生日为:"<< n.second << endl;
return 0;
}