我正在尝试实现格雷厄姆扫描,我想做这样的事情:
private static void sortByPolar(Point[] points, Point r) {
Arrays.sort(points, (p, q) -> {
int compPolar = ccw(p, r, q);
int compDist = dist(p, r) - dist(q, r);
return compPolar == 0 ? compDist : compPolar;
});
其中点 r 是最底点。但是,我正在努力在 c++ 中实现同样的想法,因为我只能传入比较的函数,我不知道它如何访问最低点。
struct compar {
vector<vector<int>> lowest;
bool operator()(vector<int> const& a, vector<int> const& b) {
cout<<lowest[0]<<endl; // throws an error, how do I get this function access to lowest?
return // TODO;
}
};
// in another function:
sort(points.begin(), points.end(), compar());