【发布时间】:2017-04-24 03:15:30
【问题描述】:
我有边缘向量。我需要通过垂直线 x==(a+b)/2 和这些边缘的交叉点的 y 坐标对这些边缘进行排序。问题是 a 和 b 不是恒定的,它们必须从一个边数组变为另一个边。如何将 a 和 b 参数发送到比较器?
struct vertex
{
double x,y;
bool operator==(const vertex &o)const {
return x == o.x && y == o.y;
}
bool operator<(const vertex &o) const{
return x < o.x || (x == o.x && y < o.y);
}
};
typedef vector<vertex> vertList;
typedef vector <pair<vertex,vertex>> Edge;
【问题讨论】:
-
边缘是指没有起点和终点的线吗?不然怎么知道边和竖线x==(a+b)/2有交点?
-
我的意思是
>。 pair 的第一个元素是起点,第二个元素是终点。所有边都有交叉点。我只需要计算 y 坐标并按它们对边缘进行排序。 -
我认为你可以制作一个捕获 a 和 b 的 lambda 函数
-
a 和 b 参数是指 o.x 和 o.y 吗?对吗?
-
我需要找到 1 条垂直线(x=(a+b)/2) 和线段的交点,它表示为一对
标签: c++ algorithm sorting c++11