fork download
  1. #include <iostream>
  2. #include <regex>
  3. #include <map>
  4.  
  5. typedef std::pair<std::string,int> PairType;
  6.  
  7. int main() {
  8. try {
  9. std::string Text =
  10.  
  11. "Хотелось бы конкретных примеров.\n" \
  12. "Типа таких \"вот человек решал эту задачу (описание задачи) на СИ полгода." \
  13. "Я сделал её на С++ на неделю\"";
  14.  
  15. std::regex Regex("([\\s,\\.=\\(\\)\\\"+-]+)");
  16. std::sregex_token_iterator Begin(Text.begin(),Text.end(), Regex, -1);
  17. std::sregex_token_iterator End;
  18. std::map<std::string,int> Map;
  19. std::vector<PairType> P;
  20. while (Begin != End) Map[*(Begin++)]++;
  21. for(const auto &i:Map) P.push_back(std::make_pair(i.first,i.second));
  22. std::sort(P.begin(),P.end(),[](const PairType &i, const PairType &j) {
  23. if (i.second == j.second) return i.first < j.first;
  24. return i.second > j.second;
  25. }
  26. );
  27. for(const auto &i:P) std::cout << i.first << " : " << i.second << std::endl;
  28. } catch(...) {
  29. std::cout << "Нарвались на засаду!" << std::endl;
  30. }
  31. return 0;
  32. }
Success #stdin #stdout 0s 3508KB
stdin
Standard input is empty
stdout
на : 3
С : 1
СИ : 1
Типа : 1
Хотелось : 1
Я : 1
бы : 1
вот : 1
её : 1
задачи : 1
задачу : 1
конкретных : 1
неделю : 1
описание : 1
полгода : 1
примеров : 1
решал : 1
сделал : 1
таких : 1
человек : 1
эту : 1