如何按 std::sort 对数组数组进行排序
How to sort array of arrays by std::sort?
我有这样的数组:
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]*'
.
我该如何克服它?
您的直接问题可以通过使用一个比较器来解决,该比较器实际上接受对数组的引用而不是对指针的引用:
struct sort_left {
bool operator()(const long (&left)[2], const long (&right)[2]) {
return left[0] < right[0];
}
};
但是由于您无法将一个数组分配给另一个数组,因此您的代码无论如何都不会编译。
您可以使用std::array
来避免这种情况:
array<array<long, 2>, N> arr{};
sort(arr.begin(), arr.end());
额外的好处是,如果array
value_type
定义了operator<
,则会自动定义它。
相关文章:
- 显示错误输出的简单数组排序程序
- C 使用单个函数对具有多种值类型的数组排序
- 2D数组排序,空格打乱顺序
- C 2D数组排序
- C++数组排序 - 将"bbba"和"0001"视为不正确排序的问题
- 数组排序功能
- CString 数组排序
- 简单的数组排序/检查 划分和征服版本
- C++ 中的多维数组排序
- 选择在++中对并行数组排序
- C++:二维指针数组排序:选择排序不适用于某些实例
- C++字符串数组排序
- C++中的指针数组排序算法
- 在VC++6中使用向量进行数组排序时出错,而在VC++2012中没有错误
- 将索引数组排序为主数组
- 数组排序、数组输入、数组输出
- C++数组排序,内存错误
- 在嵌入式系统上将数组排序功能从c++移植到c
- 基于其他int数组排序
- 多维数组排序c++奇怪行为