fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <string>
  4. #include <algorithm>
  5. #include <iterator>
  6.  
  7. using namespace std;
  8.  
  9. struct tovar {
  10. tovar()
  11. {}
  12.  
  13. tovar(int a, const char *b, const char *n) :
  14. amt(a),
  15. brand(b),
  16. name(n)
  17. {}
  18.  
  19. int amt;
  20. string brand;
  21. string name;
  22. };
  23.  
  24. bool cmp_by_amt(const tovar &l, const tovar &r)
  25. { return l.amt < r.amt; }
  26.  
  27. bool cmp_by_brand(const tovar &l, const tovar &r)
  28. { return l.brand < r.brand; }
  29.  
  30. bool cmp_by_name(const tovar &l, const tovar &r)
  31. { return l.name < r.name; }
  32.  
  33. ostream &operator<<(ostream &o, const tovar &tov)
  34. {
  35. o << "count = " << tov.amt << endl;
  36. o << "brand = " << tov.brand << endl;
  37. o << "name = " << tov.name << endl;
  38. return o;
  39. }
  40.  
  41. int main()
  42. {
  43. vector<tovar> vtovar;
  44.  
  45. vtovar.push_back(tovar(1, "aaa", "eee"));
  46. vtovar.push_back(tovar(2, "bbb", "ddd"));
  47. vtovar.push_back(tovar(3, "ccc", "ccc"));
  48. vtovar.push_back(tovar(4, "ddd", "bbb"));
  49. vtovar.push_back(tovar(5, "eee", "aaa"));
  50.  
  51. cout << "sort by name" << endl;
  52. sort(vtovar.begin(), vtovar.end(), cmp_by_name);
  53. copy(vtovar.begin(), vtovar.end(), ostream_iterator<tovar>(cout, "\n"));
  54.  
  55. cout << "sort by brand" << endl;
  56. sort(vtovar.begin(), vtovar.end(), cmp_by_brand);
  57. copy(vtovar.begin(), vtovar.end(), ostream_iterator<tovar>(cout, "\n"));
  58.  
  59. cout << "sort by amt" << endl;
  60. sort(vtovar.begin(), vtovar.end(), cmp_by_amt);
  61. copy(vtovar.begin(), vtovar.end(), ostream_iterator<tovar>(cout, "\n"));
  62.  
  63. return 0;
  64. }
Success #stdin #stdout 0.01s 2824KB
stdin
Standard input is empty
stdout
sort by name
count = 5
brand = eee
name = aaa

count = 4
brand = ddd
name = bbb

count = 3
brand = ccc
name = ccc

count = 2
brand = bbb
name = ddd

count = 1
brand = aaa
name = eee

sort by brand
count = 1
brand = aaa
name = eee

count = 2
brand = bbb
name = ddd

count = 3
brand = ccc
name = ccc

count = 4
brand = ddd
name = bbb

count = 5
brand = eee
name = aaa

sort by amt
count = 1
brand = aaa
name = eee

count = 2
brand = bbb
name = ddd

count = 3
brand = ccc
name = ccc

count = 4
brand = ddd
name = bbb

count = 5
brand = eee
name = aaa