我有一个班级,可以将我的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??
}
};
如p
,q
和(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);
}
};
答案 0 :(得分:2)
如果您只需要任何订购关系以便存储在一个集合中,您可以使用字典顺序:
P1 < P2
iff P1.x < P2.x || (P1.x == P2.x && P1.y < P2.y)