对于key-value结构的排序 第一种:lambda表达式 第二种:函数 第三种:类对()的重载,仿函数形式
#include <iostream>
#include <vector>
#include <unordered_map>
#include <string>
#include <algorithm>
using namespace std;
bool cmp(pair<char, int> v1, pair<char, int> v2)
{
if (v1.second == v2.second)
return v1.first < v2.first;
return v1.second>v2.second;
}
struct Cmp
{
bool operator()(pair<char, int> v1, pair<char, int> v2)
{
if (v1.second == v2.second)
return v1.first < v2.first;
return v1.second>v2.second;
}
};
int main()
{
string s;
while (cin >> s)
{
unordered_map<char, int> m;
for (auto& e : s)
{
m[e]++;
}
vector<pair<char, int>> v;
for (auto& e : m)
{
v.emplace_back(e.first, e.second);
}
/*第一种
sort(v.begin(), v.end(), [](pair<char,int> v1, pair<char,int> v2){
if (v1.second == v2.second)
return v1.first < v2.first;
return v1.second>v2.second;
});
*/
/*第二种
sort(v.begin(), v.end(), cmp);
*/
/*第三种
sort(v.begin(), v.end(), Cmp());
*/
}
return 0;
}