您的位置:首页 > 编程语言 > C语言/C++

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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: