0

我正在编写一个程序来使用格雷厄姆扫描计算凸包的周长,并且需要在一组数据点中找到最低的 y 坐标。我在 struct 中使用std::min_element(vector.begin(), vector.end())了重载运算符。问题是某些点可能共享相同的最低 y 坐标,在这种情况下,我需要使用它们的 x 值来比较它们。是否有任何快速作弊来检查是否有任何其他点与 min_element 共享相同的 y 而不必遍历所有内容?<point

结构:

struct cord{
        cord():x(0),y(0){}
        int x,y;
        bool operator<(const cord &p) const { return y < p.y; }
};

typedef std::vector<cord>::iterator vecIter;

函数调用:

vecIter lowestPoint =
                std::min_element(points.begin(), points.end());

std::cout << "the lowest point of the data set is: " << "(" <<
                lowestPoint->x << "," << lowestPoint->y << ")"  << std::endl;
4

1 回答 1

2

那么,只是这样的事情吗?(替换您现有的operator<功能)

bool operator<(const cord &p) const
{
   if (y != p.y)
     return y < p.y;
   else
     return x < p.x;
}
于 2013-10-16T16:21:06.340 回答