11.2.3节练习

来源:互联网 发布:js获取整数的最大数值 编辑:程序博客网 时间:2024/06/06 17:36

练习11.12 编写程序,读入string和int的序列,将每string和int存入一个pair中,保存在一个vector中。

#include <iostream>#include <vector>#include <utility>#include <string>using namespace std;int main(){pair<string, int> pair_si;vector<pair<string, int>> pair_vec;string s;int i;while (cin >> s >> i) {pair_si = { s,i };pair_vec.push_back(pair_si);}for (auto &c : pair_vec) {cout << c.first << " " << c.second << endl;}return 0;}

练习11.13 在上一题的程序中,至少有三种创建pair的方法。编写次程序的三个版本,分别采用不同的方法创建pair。解释你认为哪种形式最易于编写和理解,为什么?

#include <iostream>#include <vector>#include <string>#include <utility>using namespace std;int main(){pair<string, int> pair_si;vector<pair<string, int>> pair_vec;string s;int i;while (cin >> s >> i) {pair_si = { s,i };         //最简洁。pair_vec.push_back(pair_si);pair<string, int>pair_si(s, i); pair_vec.push_back(pair_si);pair_si = make_pair(s, i);    // 这个排第一, 在大程序中 应该最清晰,指出返回pair类型。pair_vec.push_back(pair_si);pair_si.first = s;pair_si.second = i;pair_vec.push_back(pair_si);}for (auto &c : pair_vec) {cout << c.first << " " << c.second << endl;}return 0;}

练习11.14 扩展你在11.2.1节练习(第378页)中编写的孩子姓到名的map,添加一个pair的vector,保存孩子的名字和生日。

#include <iostream>#include <string>#include <map>#include <vector>#include <utility>using namespace std;int main(){map<string, vector<string>> name = {{ "Paul",{ "Pierce","Christ" } },{ "Green",{ "Jogre" } }};pair<string, int> child;vector<pair<string, int>> child_bir;string fir, sec;int bir;while (cin >> fir >> sec >> bir) {//利用Push_back往容器添加元素。name[fir].push_back(sec);// 将完整的名字及其生日保存到childchild = { fir + " " +sec, bir };child_bir.push_back(child);}for (auto &i : child_bir) {cout << i.first << ": " << i.second << endl;}return 0;}


0 0
原创粉丝点击