难点:
1. 这个的难点在于我本来想重载pair<stirng,string>的<<运算符,然后用ostream_iterator,配合copy来进行输出,但是好像不起作用。
2.我老是忘记substr的第二参数是长度,而不是位置
void test29()
{
string in_file_path = "D:/data.txt";
ifstream in(in_file_path);
unordered_map<string, vector<pair<string, string>>>fmap;
string name;
while (getline(in,name))
{
int nameSplit = name.find(" ");
int dateSplit = name.find(" ", nameSplit + 1);
(fmap[name.substr(0, nameSplit)]).push_back(pair<string,string>(name.substr(nameSplit + 1, dateSplit-nameSplit), name.substr(dateSplit + 1)));
}
for (const auto& fam : fmap)
{
cout << fam.first << "\t家共有" << fam.second.size() << "个孩子:" << endl; ;
auto beg = fam.second.begin();
while (beg != fam.second.end())
{
cout << (*beg).first << " " << (*beg).second << endl;
++beg;
}
}
cout << "yes" << endl;
}