#include <vector>
using std::vector;

#include <algorithm>
using std::sort;

#include <iostream>
using std::cout;

class CartesianPoint
{
   private:
      int x;
      int y;

   public:
      int getX() const { return x; }
      int getY() const { return y; }
      CartesianPoint(int x, int y) : x(x), y(y) { }
};

static bool myfunction(const CartesianPoint& a, const CartesianPoint& b)
{
   return a.getX() < b.getX();
}

int main() 
{
   vector<CartesianPoint> myvector { {10, 13}, {32, 1}, {5, 29}, {12, 6}, {21, 100} };

   sort(myvector.begin(), myvector.end(), myfunction); 

   cout << "myvector contains:";
    
   for (auto& point : myvector)
       cout << ' ' << '(' << point.getX() << ',' << point.getY() << ')';
           
   cout << '\n';
}
