带有额外参数的排序列表以进行比较功能
Sorting list with extra arguments to comparison function
给定以下内容
class Coordinate {
int i,j;
};
list<shared_ptr<Coordinate>> coordinates;
(Coordinate
只是我的代码真正包含的内容的更简单的版本。我想根据到给定坐标iCenter,jCenter
的最小欧几里得距离对list
进行排序。最接近此坐标的Coordinate
应位于列表coordinates
中的第一个位置。Furterhmore,我想使用以下结构
struct ComparatorForCoordinate {
bool operator() (const shared_ptr<Coordinate>& c1, const shared_ptr<Coordinate>& c2) {
// return distance(c1 to center) > distance(c2 to center)
}
};
// sorting:
coordinates.sort(ComparatorForCoordinate());
我的问题是我的operator()
需要知道坐标iCenter,jCenter
。如何将这两个双精度值传递给比较函数?天真的尝试只是让操作员在中心位置额外有两个双精度参数是行不通的。如果这个电话有效,对我来说会很棒:
coordinates.sort(ComparatorForCoordinate(iCenter,jCenter));
您可以将状态添加到比较器中:
struct ComparatorForCoordinate {
ComparatorForCoordinate(Coordinate center) : _center(center) {}
bool operator() (const shared_ptr<Coordinate>& c1, const shared_ptr<Coordinate>& c2) const {
return distance(c1, _center) > distance(c2, _center);
}
private:
Coordinate _center;
};
// sorting:
coordinates.sort(ComparatorForCoordinate(center));
相关文章:
- 如何改进我的"String"对象比较功能
- 使用不遵循"严格弱排序"的比较功能对列表进行排序
- 如何在C++中使用自定义比较功能对字符串进行排序?
- 标准::地图比较功能
- C++ lower_bound比较功能问题
- 自定义stable_sort比较功能
- 带有额外参数的排序列表以进行比较功能
- 使用自定义比较功能设置相等性
- 相同的比较功能为C++中的排序和优先级队列提供不同的输出
- 使用自定义比较功能对静态多维数组进行排序
- 提升优先级队列比较功能
- 优先级队列中的运算符重载或比较功能C++
- C 比较功能结果
- STD :: SET的有效比较功能
- C++ STL 中排序的自定义比较功能
- 映射与对象键,查找和比较功能
- 具有多种比较功能的单标::地图/多地图
- 如何将unordered_set与比较功能一起使用
- 比较功能不适用于equal_range
- 如何对包含 pair<int,int> 元素的向量进行排序?排序是根据比较功能完成的