美文网首页
练习11.7

练习11.7

作者: 狂舞曲少WA几个好不 | 来源:发表于2016-09-03 11:16 被阅读0次

定义一个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;
}

相关文章

网友评论

      本文标题:练习11.7

      本文链接:https://www.haomeiwen.com/subject/vmvkettx.html