定義一個map,關鍵字是家庭的姓瞄崇,值是一個vector,保存家中孩子(們)的名壕曼。編寫代碼苏研,實現添加新的家庭以及向已有家庭中添加新的孩子。
實現思路:map<string, vector<string>>腮郊,add_family()添加家庭摹蘑,必須先檢查是否存在這個家庭,否則轧飞,若不做檢查衅鹿,則可能將已有家庭的孩子名字清空。
若確實沒有這個家庭过咬,則創(chuàng)建一個空的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;
}