练习11.12:
#include <iostream>
using namespace std;
#include <map>
#include <string>
#include <set>
#include <list>
#include <vector>
#include <algorithm>
#include <utility>
int main()
{
string word;
int num, i = 10;
//存pair对
vector<pair<string, int>>vp;
//读取10个string和int对
while (i != 0 && cin >> word && cin >> num)
{
//构建pair并存入vector
vp.push_back(make_pair(word, num));
--i;
}
//打印
for (const auto& pr : vp)
{
cout << "\"string\" :" << pr.first << " \"int\" :" << pr.second << endl;
}
cout << endl;
system("pause");
return 0;
}
练习11.13:
第一种方法:make_pair
第二种方法:显式初始化
第三种方法:列表初始化
第三种方法最易于编写,第二种方法易于理解
//第一种方法:
string word;
int num, i = 10;
//存pair对
vector<pair<string, int>>vp;
//读取10个string和int对
while (i != 0 && cin >> word && cin >> num)
{
//构建pair并存入vector
vp.push_back(make_pair(word, num));
--i;
}
//第二种方法:
string word;
int num, i = 10;
//存pair对
vector<pair<string, int>>vp;
//读取10个string和int对
while (i != 0 && cin >> word && cin >> num)
{
//构建pair并存入vector
vp.push_back(pair<string,int>(word, num));
--i;
}
//第三种方法:
string word;
int num, i = 3;
//存pair对
vector<pair<string, int>>vp;
//读取10个string和int对
while (i != 0 && cin >> word && cin >> num)
{
//构建pair并存入vector
vp.push_back({word,num});
--i;
}
练习11.14:
#include <iostream>
using namespace std;
#include <map>
#include <string>
#include <set>
#include <vector>
//打印map
void printFamily(map<string, vector<pair<string, unsigned int>>>& mf)
{
for (const auto& family : mf)
{
cout << family.first << " 家的成员:" << endl;
for (const auto& member : family.second)
{
cout << family.first << "." << "" << member.first << " born in : " << member.second << endl;
}
cout << endl;
}
}
int main()
{
vector<pair<string, int>>born;
map<string, vector<pair<string, unsigned int>>>mFamily = {
{"li", { {"lucy",20201010},{"jack",20201011},{"fuck",20201012} }},
{"bao",{{"Bob",20201013},{"chathy",20201014},{"Daive",20201015}}},
{"wang",{{"joy",20201016},{"litter",20201017},{"saiwen",20201018}}}
};
cout << "原始家族:" << endl;
printFamily(mFamily);
//添加新孩子1
string first_name = "wang";
string last_name = "baibai";
unsigned int br = 20201019;
//使用显式初始化
mFamily[first_name].push_back(pair<string, unsigned int>(last_name, br));
cout << "添加孩子1后:" << endl;
printFamily(mFamily);
//添加新孩子2
first_name = "bao";
last_name = "feifei";
br = 20201020;
//使用列表初始化
mFamily[first_name].push_back({ last_name,br });
cout << "添加孩子2后:" << endl;
printFamily(mFamily);
//添加新孩子3
first_name = "wang";
last_name = "jiji";
br = 20201021;
//使用make_pair
mFamily[first_name].push_back(make_pair(last_name, br));
cout << "添加孩子3后:" << endl;
printFamily(mFamily);
system("pause");
return 0;
}