我输入
hua
jia
^z
#include<iostream>
#include<string>
#include<vector>
#include<list>
#include<algorithm>
#include<fstream>
#include<iterator>
#include<map>//包含map multimap
#include<set>//包含set multiset
using namespace std;
void print_multimap(const multimap<string, vector<string> > &multi_work)//输出multimap
{
for (multimap<string, vector<string> >::value_type it : multi_work)
{
cout << "the editor is " << it.first << " ";
stable_sort(it.second.begin(), it.second.end());//加入了一个排序算法
for (vector<string>::value_type i : it.second)
cout << i << " ";
cout << endl;
}
}
int main()
{
multimap<string, vector<string> >multi_work{ { "li",{ "huayuan","xinhua" } } };
string name_editor;
string name_work;
multimap<string, vector<string> >::iterator it = multi_work.begin();
cout << (*it).first << endl;
while (cin >> name_editor)
{
int temp_int = 0;
cout << "input n or 0" << endl;
cin >> temp_int;
if (temp_int)//加入作者
{
insert_iterator<multimap<string, vector<string> >> it = inserter(multi_work, multi_work.end());
cout << "please input the editor's work" << endl;
vector<string>vec_temp;
while (cin >> name_work)//放入作品
{
vec_temp.push_back(name_work);
}
pair<string, vector<string> > pair_temp;//用插入迭代器赋值进入multimap中
pair_temp.first = name_editor;
pair_temp.second = vec_temp;
*it = pair_temp;
}
else
{//找到这个作者并返回该位置的迭代器
multimap<string, vector<string> >::iterator it = multi_work.find(name_editor);
cout << "please input the editor's new work" << endl;
vector<string>vec_temp;
while (cin >> name_work)//放入作品
{
vec_temp.push_back(name_work);
}
(*it).second = vec_temp;
}
}
print_multimap(multi_work);
cout << "input an editor you want to erase " << endl;
string name_editor1;
cin >> name_editor1;
multi_work.erase(name_editor1);
cout << endl;
print_multimap(multi_work);
system("pause");
}