fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. using namespace std;
  5.  
  6.  
  7. class Ship
  8. {
  9. public:
  10. Ship(){}
  11. Ship(string name, int distance)
  12. {
  13. mName = name;
  14. mDistance = distance;
  15. }
  16. ~Ship(){}
  17. friend ostream & operator << (ostream &out, const Ship &ship);
  18. bool operator < (const Ship& str) const
  19. {
  20. return (mDistance < str.mDistance);
  21. }
  22. static bool ptrcmp(const Ship *a,const Ship *b)
  23. {
  24. return *a<*b;
  25. }
  26. private:
  27. string mName;
  28. int 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<Ship*> ships;
  39. ships.push_back(new Ship("some1", 20));
  40. ships.push_back(new Ship("some2", 10));
  41. ships.push_back(new Ship("some3", 5));
  42. ships.push_back(new Ship("some4", 40));
  43.  
  44. sort(ships.begin(), ships.end(), Ship::ptrcmp);
  45.  
  46. for (Ship *ship : ships)
  47. {
  48. cout << *ship;
  49. delete ship;
  50. }
  51.  
  52. return 0;
  53. }
Success #stdin #stdout 0s 3476KB
stdin
Standard input is empty
stdout
some3
some2
some1
some4