我有这样的阵列:
long my_array_left[n][2];
我为它编写了比较器函数,它接受两个元素的数组并按照数组的第一个元素排序:
struct sort_left {
bool operator()(const long &left[2], const long &right[2]) {
return left[0] < right[0];
}
}
然后我使用库函数std::sort
来排序my_array_left[n][2]
sort(begin(my_array_left), end(my_array_left), sort_left());
但我有一个错误:
parameter type mismatch: Incompatible pointer types 'long **' and 'long[2]*'
。
我怎样才能克服它?
答案 0 :(得分:4)
通过使用实际接受数组引用的比较器而不是对指针的引用,可以解决您的直接问题:
io_service
但是既然你不能将数组分配给另一个数组,那么你的代码无论如何都不会编译。
您可以使用std::array
:
struct sort_left {
bool operator()(const long (&left)[2], const long (&right)[2]) {
return left[0] < right[0];
}
};
额外的好处是array<array<long, 2>, N> arr{};
sort(arr.begin(), arr.end());
operator<
会自动定义array
定义它的value_type
。