c++平面点排序怎么做

img


输入n个平面坐标系中的点,将这些点按照距离原点从近到远的顺序排序输出。
C++结构体运用
Class Point{ };
应该如何操作



#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
class point {
    int x;
    int y;
public:
    point(int _x = 0, int _y = 0) :x(_x), y(_y) {}
    double  distance(const point& p)const {
        int dx = p.x - x;
        int dy = p.y - y;
        double res = sqrt(dy * dy + dx * dx);
        return res;
    }
    int getX()const {
        return  x;
    }
    int getY()const {
        return y;
    }
    
};
int main()
{
    int n;
    cin >> n;
    vector<point> points;
    for (int i = 0; i < n; i++) {
        int x, y;
        cin >> x >> y;
        points.push_back({ x,y });
    }
    
    sort(points.begin(), points.end(), [](const point& p1, const point& p2) {
        auto l1 = p1.distance(point());
        auto l2 = p2.distance(point());
        return l1 < l2;
        });
    for (auto p : points) {
        cout <<"("<<p.getX() << "," << p.getY() << ")";
    }
}