fork(1) download
  1. #include <unordered_map>
  2. #include <iostream>
  3. #include <set>
  4.  
  5. int main() {
  6. std::string input = "hello world";
  7.  
  8. std::unordered_map<char, unsigned int> count;
  9. for (char character : input)
  10. if (character >= 'a' && character <= 'z')
  11. count[character]++;
  12.  
  13. std::cout << "Unsorted list:" << std::endl;
  14. for (auto const &kv : count)
  15. std::cout << kv.first << " = " << kv.second << std::endl;
  16.  
  17. using myPair = std::pair<char, unsigned int>;
  18. auto comp = [](const myPair& a, const myPair& b) {
  19. return (a.second > b.second || a.second == b.second && a.first < b.first);
  20. };
  21. std::set<myPair, decltype(comp)> sorted(comp);
  22. for(auto const &kv : count)
  23. sorted.insert(kv);
  24.  
  25. std::cout << "Sorted list according to frequency then alphabetically:" << std::endl;
  26. for (auto const &kv : sorted)
  27. std::cout << kv.first << " = " << kv.second << std::endl;
  28.  
  29. return 0;
  30. }
Success #stdin #stdout 0s 4260KB
stdin
Standard input is empty
stdout
Unsorted list:
r = 1
h = 1
e = 1
d = 1
o = 2
w = 1
l = 3
Sorted list according to frequency then alphabetically:
l = 3
o = 2
d = 1
e = 1
h = 1
r = 1
w = 1