fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <memory>
  5. using namespace std;
  6.  
  7.  
  8. class Ship
  9. {
  10. public:
  11. Ship(){}
  12. Ship(string name, int distance)
  13. {
  14. mName = name;
  15. mDistance = distance;
  16. }
  17. ~Ship(){}
  18. friend ostream & operator << (ostream &out, const Ship &ship);
  19. friend bool operator<(const shared_ptr<Ship>& left, const shared_ptr<Ship>& right);
  20.  
  21. private:
  22. string mName;
  23. int mDistance;
  24. };
  25.  
  26. bool operator<(const shared_ptr<Ship>& left, const shared_ptr<Ship>& right)
  27. {
  28. return left->mDistance < right->mDistance;
  29. }
  30.  
  31. ostream & operator << (ostream &out, const Ship &ship)
  32. {
  33. return out << ship.mName << endl;
  34. }
  35.  
  36.  
  37. int main() {
  38. vector<shared_ptr<Ship>> ships;
  39. ships.push_back(make_shared<Ship>("some1", 20));
  40. ships.push_back(make_shared<Ship>("some2", 10));
  41. ships.push_back(make_shared<Ship>("some3", 5));
  42. ships.push_back(make_shared<Ship>("some4", 40));
  43.  
  44. sort(ships.begin(), ships.end());
  45.  
  46. for (auto ship : ships)
  47. {
  48. cout << *ship;
  49. // delete ship;
  50. }
  51.  
  52. return 0;
  53. }
Success #stdin #stdout 0s 3436KB
stdin
Standard input is empty
stdout
some3
some2
some1
some4