fork(1) download
  1. #include <algorithm>
  2. #include <iostream>
  3. #include <map>
  4. #include <vector>
  5.  
  6.  
  7. std::map<std::string, std::size_t> compute_frequencies(const std::vector<std::string>& words)
  8. {
  9. std::map<std::string, std::size_t> res;
  10. for(const auto& word : words) {
  11. res[word]++;
  12. }
  13. return res;
  14. }
  15.  
  16. std::vector<std::pair<std::string, std::size_t>> as_vector(const std::map<std::string, std::size_t>& m)
  17. {
  18. return {m.begin(), m.end()};
  19. }
  20.  
  21. int main() {
  22. const std::vector<std::string> words{
  23. "qwe", "asd", "qwe", "asd", "zxc", "asd", "zxc", "qwe", "qwe", "asd", "sdf", "asd", "fsd"
  24. };
  25. auto frequencies = as_vector(compute_frequencies(words));
  26. std::partial_sort(frequencies.begin(), frequencies.end(), frequencies.begin() + 2,
  27. [](const auto& lhs, const auto& rhs) {
  28. return lhs.second > rhs.second;
  29. });
  30. for (std::size_t i = 0; i != 2; ++i) {
  31. std::cout << frequencies[i].first << " " << frequencies[i].second << std::endl;
  32. }
  33. }
  34.  
Success #stdin #stdout 0s 16072KB
stdin
Standard input is empty
stdout
asd 5
qwe 4