【发布时间】:2018-07-28 09:39:42
【问题描述】:
我想根据元素与索引为 0 的元素之间的相似性对二维数组进行排序。
如何定义可以使用外部第三个对象(索引为 0 的元素)的自定义排序函数?
比较功能需要做以下事情
bool compare(float *a, float *b) {
float *source = 2DArray[0];
return distance(source, a) > distance(source, b);
}
调用时
std::sort(std::begin(2DArray), std::end(2DArray), compare);
显然无法访问 2DArray。
如何编写,以便对象可以调用函数来调用排序函数并授予对 2DArray[0] 的访问权限?
【问题讨论】:
-
使用仿函数,而不是函数?
-
2DArray不是有效的 C++ 标识符。确保您的代码在发布之前编译(顺便问一下,2DArray的类型是什么?) -
使用lambda expression 代替函数?
-
@user202729 问题没有没有指定C++标准版本,所以假设是“当前版本”,目前是C++17。因此,可以假设 lambda 是可用的。
-
@jarryd 不要发布伪代码。发布真的,可编译的代码。
标签: c++