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は二次元ベクトルであり、行と列は状況に応じて変更できることに注意してください。

bannerAds