如何比较2d空间中的两点

时间:2014-12-28 12:18:01

标签: c++ stdset

我有一个班级,可以将我的Points放在2D空间中,如下所示:

class Point{
public:
Point(double a, double b){ x = a; y = b; }

//some additional information

private:
    double x, y;
};

我喜欢在Points中使用这些std::set,但我不知道如何编写比较结构

struct cCompare{
    bool operator()(const Point &p1, const Point &p2){
         //what should I write here??
    }
};

pq(p_1,p_2) = (q_1,q_2)等两个点相等。我是否必须在Point课程中存储一些其他信息?索引或每个Point的唯一编号之类的东西?并有这样的事情:

struct cCompare{
    bool operator()(const Point &p1, const Point &p2){
         return (p1.index < p2.index);
    }
};

1 个答案:

答案 0 :(得分:2)

如果您只需要任何订购关系以便存储在一个集合中,您可以使用字典顺序:

P1 < P2 iff P1.x < P2.x || (P1.x == P2.x && P1.y < P2.y)