fork(1) download
  1. #include <iostream>
  2. #include <map>
  3. #include <iostream> // std::cout
  4. #include <iterator> // std::next
  5. #include <list> // std::list
  6. #include <algorithm> // std::for_each
  7. #include <limits.h>
  8. using namespace std;
  9.  
  10. int main() {
  11. multimap<int, string, greater<int> > m; //instead of multimap<int, string > m;
  12. m.insert(make_pair(95, "Foo"));
  13. m.insert(make_pair(95, "Bar"));
  14. m.insert(make_pair(95, "Ball"));
  15. m.insert(make_pair(93, "Abacus"));
  16. m.insert(make_pair(92, "Sober"));
  17. m.insert(make_pair(93, "Globe"));
  18. m.insert(make_pair(93, "Hello"));
  19. m.insert(make_pair(93, "Ameen"));
  20. //for(auto it : m)
  21. multimap<int, string, greater<int> >:: iterator it = m.begin(), st, ed;
  22. vector<string> vec;
  23. bool sameKey = true;
  24. int lastKey = INT_MAX;
  25. while(it != m.end())
  26. {
  27. //cout << it->first << " : " << it->second <<endl;
  28. //pair<int, string> temp = *it;
  29. if(it->first < lastKey)
  30. {
  31. sort(vec.begin(), vec.end());
  32. for(int i = 0; i < vec.size(); i++){
  33. st->second = vec[i];
  34. st++;
  35. }
  36. st = it;
  37. vec.clear();
  38. }
  39. vec.push_back(it->second);
  40. lastKey = it->first;
  41. it++;
  42. }
  43. sort(vec.begin(), vec.end());
  44. for(int i = 0; i < vec.size(); i++){
  45. st->second = vec[i];
  46. st++;
  47. }
  48. it = m.begin();
  49. while(it != m.end())
  50. {
  51. cout << it->first << " : " << it->second <<endl;
  52. it++;
  53. }
  54.  
  55. return 0;
  56. }
Success #stdin #stdout 0s 3464KB
stdin
Standard input is empty
stdout
95 : Ball
95 : Bar
95 : Foo
93 : Abacus
93 : Ameen
93 : Globe
93 : Hello
92 : Sober