代码如下:
#include<iostream>
#include<string>
#include<string.h>
#include<map>
#include<vector>
#include<algorithm>
using namespace std;
int cmp(const pair<string,double> &x,const pair<string,double> &y)
{
return x.second > y.second;
}
void sortMapbyValue(map<string,double> &t_map,vector< pair<string,double> > &t_vec)
{
for(map<string,double>::iterator iter = t_map.begin();iter != t_map.end(); iter ++)
{
t_vec.push_back(make_pair(iter->first,iter->second));
}
sort(t_vec.begin(),t_vec.end(),cmp);
}
int main()
{
map<string,double> m_result;
vector< pair<string,double> > v_result;
m_result.insert(pair<string,double>("AAA", 20.33));
m_result.insert(pair<string,double>("BBB", 22.33));
m_result.insert(pair<string,double>("CCC", 21.33));
m_result.insert(pair<string,double>("DDD", 19.33));
m_result.insert(pair<string,double>("EEE", 22.33));
cout<<"sort by key :"<<endl;
for(map<string,double>::iterator iter = m_result.begin(); iter != m_result.end(); iter++)
{
cout<<iter->first<<"\t\t"<<iter->second<<endl;
}
sortMapbyValue(m_result,v_result);
cout<<endl<<"sort by value :"<<endl;
for(int i=0; i<v_result.size(); i++)
{
cout<<v_result[i].first<<"\t\t"<<v_result[i].second<<endl;
}
return 0;
}
运行结果如下: