c++で2次元配列を列ごとに並べ替える方法は何ですか。
C++の2次元配列を列ごとに並び替えたい場合、std::sort関数とカスタム比較関数を使用して処理できます。
最初、配列をarrとし、m行n列であると仮定します。比較関数cmpを定義する必要があります。これは2つの要素を比較するために使用されます。
bool cmp(const vector<int>& a, const vector<int>& b) {
return a[col] < b[col];
}
colは、どの列でソートするかを示しています。比較関数の返り値がtrueの場合、aはbの前に表示されます。falseの場合は、aはbの後に表示されます。
その後、二次元配列を列ごとにソートするためにstd::sort関数をメイン関数で使用することができます。特定の列で並べ替える場合は、colをiに設定する必要があります。
int main() {
int m = arr.size(); // 行数
int n = arr[0].size(); // 列数
int col = i; // 按第i列进行排序
std::sort(arr.begin(), arr.end(), cmp);
// 输出排序后的二维数组
for (int i = 0; i < m; i++) {
for (int j = 0; j < n; j++) {
std::cout << arr[i][j] << " ";
}
std::cout << std::endl;
}
return 0;
}
このようにすれば、二次元配列を列ごとにソートすることができます。arrは二次元ベクトルであり、行と列は状況に応じて変更できることに注意してください。