#include<iostream>
#include<map>
#include<string>
using namespace std;
//multimap与map基本相同,唯独不同的是,multimap允许插入重复键值的元素。
int main()
{
//插入
multimap<string, int>m;
m.insert(pair<string,int>("ssss",7));
m.insert(pair<string, int>("eeee", 6));
m.insert(pair<string, int>("yyys", 5));
m.insert(pair<string, int>("hhhhs", 5));
m.insert(pair<string, int>("nnns", 1));
m.insert(pair<string, int>("hhhhs", 5));
m.insert(pair<string, int>("nnns", 1));
//遍历
multimap<string, int>::iterator it;
for (it=m.begin(); it != m.end(); it++)
{
cout << (*it).first <<":" << (*it).second << endl;
}
//删除删除操作采用erase()方法,可删除某个迭代器位置上的元素、
//等于某个键值的所有重复元素、一个迭代器区间上的元素。
//使用clear()方法可将multimap容器中的元素清空
if (m.erase("nnns"))
{
cout << "删除成功" << endl;
}
else
{
cout << "删除失败" << endl;
}
for (it = m.begin(); it != m.end(); it++)
{
cout << (*it).first << ":" << (*it).second << endl;
}
return 0;
}
//下面补充一点关于map的struct的用法
#include<iostream>
#include<map>
#include<string>
using namespace std;
struct Info
{
string name;
int score;
bool operator < (const Info &a) const {
return score > a.score;
}
};
int main()
{
map<Info,int>m;
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
string c;
cin >> c;
Info v;
v.name = c;
v.score = i + 1;
m[v] = 25+i;
}
map<Info, int>::iterator it;
for (it = m.begin(); it != m.end(); it++) {
cout << (*it).second << ":";
cout << ((*it).first).name <<" "<< ((*it).first).score << endl;
}
}