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

难点:

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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值