练习11.7:定义一个map,关键字是家庭的姓,值是一个vector,保存家中孩子(们)的名。编写代码,实现添加新的家庭以及向已有家庭中添加新的孩子。
答:见 练习11.7.cpp
/*
*C++Primer(第五版)
*2015/9/24
*练习11.7
*问题描述:练习11.7:定义一个map,关键字是家庭的姓,值是一个vector,保存家中孩子(们)的名。编写代码,实现添加新的家庭以及向已有家庭中添加新的孩子。
*说明:初次使用map,有点点怯生,其实真用了,也还好
*作者:Nick Feng
*邮箱:NickGreen23@163.com
*/
#include <iostream>
#include <string>
#include <map>
#include <vector>
using namespace std;
int main()
{
//定义一个map
string fname = "", name = "";
vector<string> vec={"Tom","Jerry","Lucy"};
map<string,vector<string>> family = {{"Green",vec},{"White",vec}};
//按照英文名称习惯打印名字,如Tom.Green
for(auto &member : family)
{
cout << "Member is:" << " " << endl;
for(auto it = member.second.begin(); it != member.second.end();++it)
cout << *it << "." << member.first << endl;
cout << endl;
}
//先输入family name,然后自己name
while (cin >> fname >> name)
family[fname].push_back(name);
//再次输出
for(auto &member : family)
{
cout << "Member is:" << " " << endl;
for(auto it = member.second.begin(); it != member.second.end();++it)
cout << *it << "." << member.first << endl;
cout << endl;
}
return 0;
}