练习11.7
#include <iostream>
#include <string>
#include <map>
#include <vector>
#include<iterator>
using namespace std;
int main()
{
map<string, vector<string>> imap = { {"shi",{"shang"}} };
for (auto f : imap) {
cout << f.first << "家有" << f.second.size() << "小孩。\n他们的名字是:\n";
ostream_iterator<string> out_iter(cout, " ");
copy(f.second.cbegin(), f.second.cend(), out_iter);
cout << endl;
}
string fname, gname;
cout << "input your family name:\n";
while (cin >> fname) {
cout << "input your given name:\n";
cin >> gname;
imap[fname].push_back(gname);
cout << "input your family name:\n";
}
for (auto f : imap) {
cout << f.first << "家有" << f.second.size() << "小孩。\n他们的名字是:\n";
for (auto name = f.second.begin(); name != f.second.end(); ++name)
cout << *name << " ";
//ostream_iterator<string> out_iter(cout, " ");
//copy(f.second.cbegin(), f.second.cend(), out_iter);
cout << endl;
}
}
练习11.8
#include <iostream>
#include <string>
#include <map>
#include <vector>
#include<algorithm>
using namespace std;
int main()
{
vector<string> ivec;
string word;
while (cin >> word)
{
if(find(ivec.begin(),ivec.end(),word)==ivec.end())
ivec.push_back(word);
}
for (const auto &s : ivec)
cout << s << " ";
cout << endl;
return 0;
}
切勿使用string的find操作。
练习11.14
#include <iostream>
#include <string>
#include <map>
#include <vector>
#include<iterator>
#include<utility>
using namespace std;
int main()
{
map<string, vector<pair<string, string>>> imap1;
string fname, gname,birdata;
cout << "input your family name:\n";
while (cin >> fname) {
cout << "input your given name and birthday:\n";
cin >> gname >> birdata;
imap1[fname].push_back({ gname ,birdata});
cout << "input your family name:\n";
}
for (auto f : imap1) {
cout << f.first << "家有" << f.second.size() << "小孩。\n他们的名字是:\n";
for (auto name = f.second.begin(); name != f.second.end(); ++name)
cout << (*name).first <<" 's birthday is "
<< (*name).second << " ";
cout << endl;
}
}