c++ primer 关联容器习题练习
2014-01-29 15:47
477 查看
学习关联容器一章,看到map,稀稀松松已经看到第10章。基础东西学了一大堆,做个习题巩固一下。
问题如下:
代码如下:
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
#include <string>
#include <map>
#include <utility>
using namespace std;
int main()
{
ifstream in_file,res_file;
string line,str_first,str_name;
int int_date;
in_file.open("123.txt"); //文件格式为 第一列姓名,第二列名字,第三列生日
typedef pair<string,int> name_date;
typedef map<string,vector<name_date> > name_first;
name_first first_name;
vector<name_date> vec_con;
while (getline(in_file,line))
{
istringstream in_string(line);
while (in_string>>str_first>>str_name>>int_date)
{
pair<name_first::iterator,bool> pair_insert;
vec_con.push_back(make_pair(str_name,int_date));
pair_insert=first_name.insert(make_pair(str_first,vec_con)); /
if (!pair_insert.second)
{
pair_insert.first->second.push_back(make_pair(str_name,int_date));
}
}
vec_con.clear();
}
//insert成功,证明map中无此姓氏存储,失败则有存储,需要更新姓氏对应的vector
in_file.close();
for (name_first::iterator map_it = first_name.begin();
map_it != first_name.end(); map_it++)
{
cout<<map_it->first<<":"<<endl;
for (vector<name_date>::iterator vec_it = map_it->second.begin();
vec_it != map_it->second.end(); vec_it++)
{
cout<<vec_it->first<<"->"<<vec_it->second<<endl;
}
}
return 0;
}
问题如下:
代码如下:
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
#include <string>
#include <map>
#include <utility>
using namespace std;
int main()
{
ifstream in_file,res_file;
string line,str_first,str_name;
int int_date;
in_file.open("123.txt"); //文件格式为 第一列姓名,第二列名字,第三列生日
typedef pair<string,int> name_date;
typedef map<string,vector<name_date> > name_first;
name_first first_name;
vector<name_date> vec_con;
while (getline(in_file,line))
{
istringstream in_string(line);
while (in_string>>str_first>>str_name>>int_date)
{
pair<name_first::iterator,bool> pair_insert;
vec_con.push_back(make_pair(str_name,int_date));
pair_insert=first_name.insert(make_pair(str_first,vec_con)); /
if (!pair_insert.second)
{
pair_insert.first->second.push_back(make_pair(str_name,int_date));
}
}
vec_con.clear();
}
//insert成功,证明map中无此姓氏存储,失败则有存储,需要更新姓氏对应的vector
in_file.close();
for (name_first::iterator map_it = first_name.begin();
map_it != first_name.end(); map_it++)
{
cout<<map_it->first<<":"<<endl;
for (vector<name_date>::iterator vec_it = map_it->second.begin();
vec_it != map_it->second.end(); vec_it++)
{
cout<<vec_it->first<<"->"<<vec_it->second<<endl;
}
}
return 0;
}
相关文章推荐
- c++ primer(第五版)学习笔记及习题答案代码版(第十一章)关联容器
- 《c++ primer》第 10 章 关联容器
- 读书笔记:C++ primer 5th edition--chapter11.关联容器
- C++ Primer 【第四版】第十章 关联容器
- C++ primer 习题练习:9.28
- C++ primer 读书笔记系列——(7)关联容器
- C++ Primer (第四版)课后习题9.26 删除容器元素
- C++ Primer 第十章 关联容器
- C++Primer第五版 第11章 关联容器(练习解答)
- C++ Primer 随笔 Chapter 10 关联容器
- C++ primer 习题练习:8.6
- 读书笔记《C++ Primer》第五版——第十一章 关联容器
- C++ Primer学习总结 第11章 关联容器
- 关联容器 - 1【C++ Primer 学习笔记 - 第十章】
- C++ Primer : 第十一章 : 关联容器示例: 一个单词转换的map
- C++ Primer 第十章 关联容器
- C++ primer阅读笔记---------------关联容器
- 第十章-关联容器----重学C++之《 C++ PRIMER》
- C++ Primer学习笔记2--c++ 关联容器
- C++ Primer 随笔 Chapter 10 关联容器