我对INT的坐标列表像查找列表中最接近的点到一个对象名单
list<pair<int,int> > coordinates;
我需要找到的最近点到一个原点,
class Point{
public:
float x;
float y;
};
我可以找到与自定义比较对象和排序,但我想知道有更快的方式与min?我试过
class DistanceComparator{
public:
DistanceComparator(const Point& p){origin=p;}
inline bool operator<(std::pair<int,int> & lhs,std::pair<int,int > & rhs)
{
float deltaX1=lhs.first-origin.x;
float deltaY1=lhs.second-origin.y;
float deltaX2=rhs.first-origin.x;
float deltaY2=rhs.second-origin.y;
return (deltaX1*deltaX1+deltaY1*deltaY1)<(deltaX2*deltaX2+deltaY2*deltaY2);
}
private:
Pointorigin;
};
但是<只需要一个参数。这个怎么做 ?
+1“突击队”的方法 – linello
另外的std :: nth_element(。!线性复杂度平均值) – PSIAlt