【发布时间】:2015-09-17 15:25:44
【问题描述】:
我想知道是否有一种基于某些外部值对向量进行排序的好方法。例如,我有一个点的 k 最近邻居向量。我想根据他们到查询点的距离对这个向量进行排序。查询点不包含在结果中,std::sort 允许您为向量中的两个元素定义一个比较函数(而不是每个元素与一个固定点)。有没有预先构建的方法来做这种排序?还是我需要构建自己的自定义排序算法?谢谢
【问题讨论】:
-
直接的解决方案是使用带有
std::sort的自定义比较函数对象(如下面的答案所示)。但这可能会变得非常浪费,因为它会(可能)多次计算相同的距离。如果这对您来说是个问题,您可能需要预先计算距离,或者对计算的距离进行某种形式的缓存。