對於key-value結構的排序
第一種:lambda表達式
第二種:函數
第三種:類對()的重載,仿函數形式ios
#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; }