2

我正在尝试按 O 点的极角对平面上的点进行排序。代码的简化版本如下所示:

bool comparePolar(point A, point B, point O){
    //if point B lies to the left of the edge OA, return false
    //return true
}

那么,如何在调用 sort 函数时将点 O 传递给该函数,它将使用 comparePolar 作为其比较函数?

4

1 回答 1

2

您需要构造一个包含O(或对它的引用)的函数对象。最简单的方法是使用 lambda

// initialised wherever
std::vector<point> points;
point O;

// Capture O by value
auto cmp = [O](point A, point B) { return comparePolar(A, B, O); };
std::sort(points.begin(), points.end(), cmp);
于 2020-03-23T11:10:10.867 回答