练习11.7

定义一个map,关键字是家庭的姓,值是一个vector,保存家中孩子(们)的名。编写代码,实现添加新的家庭以及向已有家庭中添加新的孩子。

实现思路:map<string, vector<string>>,add_family()添加家庭,必须先检查是否存在这个家庭,否则,若不做检查,则可能将已有家庭的孩子名字清空。
若确实没有这个家庭,则创建一个空的vector<string>,表示这个家庭的孩子名字列表。函数add_child()向一个已有家庭添加孩子的名字:首先用[]运算符取出该对象的vector,然后调用push_back()将名字追加到vector末尾。

#include <iostream>
#include <string>
#include <vector>
#include <map>
using namespace std;

void add_family(map<string, vector<string>>& familes, const string& family) {
    if (familes.find(family) == familes.end()) {
        familes[family] = vector<string>();
    }
}
void add_child(map<string, vector<string>>& familes, const string& family, const string& childName) {
    familes[family].push_back(childName);
}

int main() {
    map<string, vector<string>> families;

    add_family(families, "张");
    add_child(families, "张", "强");
    add_child(families, "张", "刚");
    add_child(families, "王", "五");
    add_family(families, "王");

    for (auto f : families) {
        cout << f.first << "家的孩子:";
        for (auto c : f.second) {
            cout << c << " ";
        }
        cout << endl;
    }
    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容