大家都知道map本身内部是按照key排序的,是不能直接使用sort函数来为map按照value排序的。
哈!贴个自己写的小代码:
#include<iostream>
#include<string>
#include<map>
#include<algorithm>
#include<vector>
#include<utility>
using namespace std;
typedef pair<string,int> PAIR;
bool cmp(const PAIR& x,const PAIR& y)
{
return x.second<y.second;
}
int main()
{
string s;
map<string,int> counters;
while(cin>>s)
counters[s]++;
vector<PAIR> change(counters.begin(),counters.end());
sort(change.begin(),change.end(),cmp);
for(int i=0;i!=change.size();i++)
cout<<change[i].first<<"\t"<<change[i].second<<endl;
return 0;
}