key相同时,value的默认放置顺序
C++11默认对multimap中key相同的value值,是按照输入顺序进行存储的
#include<iostream>
#include<string>
#include<map>
using namespace std;
int main()
{
multimap<string,int> mp;
string key;
int value,n;
cin>>n;
while(n--)
{
cin>>key>>value;
mp.insert(make_pair(key,value));
}
cout<<endl;
for(auto iter=mp.begin();iter!=mp.end();iter++)
{
cout<<iter->first<<" "<<iter->second<<" "<<endl;
}
return 0;
}
对相同key的value进行排序
如果要对相同的key的value再进行排序,只需要再借助一个multimap就可以了
#include<iostream>
#include<map>
#include<string>
using namespace std;
int main()
{
multimap<string,int> mp;
multimap<int,string> tmp;
string key;
int value,n;
cin>>n; //输入n个数
while(n--)
{
cin>>key>>value;
tmp.insert(make_pair(value,key)); //对value进行排序
}
for(auto iter=tmp.begin();iter!=tmp.end();iter++)
{
mp.insert(make_pair(iter->second,iter->first));
}
for(auto iter=mp.begin();iter!=mp.end();iter++)
{
cout<<iter->first<<" "<<iter->second<<" "<<endl;
}
return 0;
}
查找multimap中指定key的所有元素
使用equal_range(key),或者lower_bound(key)和upper_bound(key)
#include<iostream>
#include<map>
#include<string>
using namespace std;
int main()
{
multimap<string,int> mp;
string key;
int value,n;
cin>>n;
while(n--)
{
cin>>key>>value;
mp.insert(make_pair(key,value));
}
cout<<endl;
// equal_range()函数
auto pr=mp.equal_range("xiao");
if(pr.first!=mp.end())
{
cout<<"equal_range:"<<endl;
for(auto iter2=pr.first;iter2!=pr.second;iter2++)
cout<<iter2->first<<" "<<iter2->second<<" "<<endl;
}
//lower_bound()和upper_bound()函数
auto iter1=mp.lower_bound("xiao");
auto iter2=mp.upper_bound("xiao");
if(iter1!=mp.end())
{
cout<<"lower_bound && upper_bound:"<<endl;
for(auto iter=iter1;iter!=iter2;iter++)
cout<<iter->first<<" "<<iter->second<<endl;
}
return 0;
}