要對(duì)C++二維數(shù)組進(jìn)行排序,可以使用sort函數(shù)和自定義的比較函數(shù)來(lái)實(shí)現(xiàn)。下面是一個(gè)示例代碼:
#include <iostream>
#include <algorithm>
using namespace std;
bool compareArrays(const int* arr1, const int* arr2, int size) {
for (int i = 0; i < size; i++) {
if (arr1[i] < arr2[i]) {
return true;
} else if (arr1[i] > arr2[i]) {
return false;
}
}
return false;
}
int main() {
const int rows = 3;
const int cols = 4;
int arr[rows][cols] = {{1, 4, 2, 3}, {5, 6, 7, 8}, {9, 10, 11, 12}};
sort(&arr[0][0], &arr[0][0] + rows * cols, [&](const int& a, const int& b) {
int row1 = (int)(&a - &arr[0][0]) / cols;
int col1 = (int)(&a - &arr[0][0]) % cols;
int row2 = (int)(&b - &arr[0][0]) / cols;
int col2 = (int)(&b - &arr[0][0]) % cols;
return compareArrays(arr[row1], arr[row2], cols);
});
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
cout << arr[i][j] << " ";
}
cout << endl;
}
return 0;
}
在這個(gè)示例中,我們首先定義了一個(gè)compareArrays
函數(shù),用于比較兩個(gè)一維數(shù)組的大小關(guān)系。然后,在主函數(shù)中,我們使用sort函數(shù)對(duì)二維數(shù)組進(jìn)行排序。這里我們傳入了一個(gè)自定義的比較函數(shù),該函數(shù)根據(jù)行優(yōu)先的順序來(lái)比較二維數(shù)組中的元素大小。
請(qǐng)注意,為了在比較函數(shù)中獲取元素的行和列索引,我們使用了指針運(yùn)算來(lái)計(jì)算元素在二維數(shù)組中的位置。
最后,我們使用兩個(gè)嵌套的循環(huán)來(lái)遍歷和輸出排序后的二維數(shù)組。