this質問で列を使って二次元配列を並べ替える質問は、各ベクトルの最初の要素によるソートベクトルと各ベクトルを通り、要素で並べ替える2番目の例の良い説明を参照してください。
STL
私は配列はSTLのパワーユーザーのためのC++の第一級オブジェクトはないことを知っているが、私は(ちょうどアンドレイ・アレキのような)アレイが好き。
ので、コードを検討することができます:
typedef int arr2D[3];
arr2D array2D[3] = { { 1, 4, 3 },
{ 9, 2, 5 },
{ 7, 6, 8 } };
std::sort(begin(array2D[2]), end(array2D[2]), greater<>());
この結果はこのように、降順でarray2Dの最後行を注文、次のとおりです。
1 4 3
9 2 5
8 7 6 <- last row by descending order
をしかし、私が望むのは、array2Dの最後の列を降順に並べ替えることです。
array
S(ないベクトル)を使用して
1 4 8
9 2 5
7 6 3
^
└--- last column by descending order
とstd::sort
、誰かが私を助けることができますか?
はあなたがそれぞれの行の上に、特定の列の要素を反復処理するカスタムイテレータを、書くことができますあなたの
残念ながら、 'std :: sort'を使って"列 "をソートすることはできません。別の配列(またはベクトル)にそれらを抽出することができます( 'newArray [0]'は 'array2D [0] [2]'などに対応します)、並べ替え、並べ替えられた値を配列に書き戻します。 –
ソートの前後で行列を転置する必要があります。 – Jonas
プログラマとJonas:私はあなたと同じだと思っていましたが、あなたのコメントを読む前に、私は間違っていると思っていました。今度は、 'std :: sort'は連続したデータ構造にしか適用できないと確信しています。 – user7140484