2次元ベクトル(10x100)内の数値をソートする必要があります。C++ 2Dベクトルソート
私の考えは、最初に行でソートし、次に最初の列で最小の番号を見つけて新しい1Dベクトルに保存し、列の中で最小のものを最後の番号まで削除することです。
私のコードはこのようになりますが、動作しません。あなたの質問やロジック例に基づいて
vector <vector <int> > vec(10, vector <int> (0));// already sorted by rows.
vector <int> datafinal;
for(int row=0; row < vec.size(); row++){
int mini = vec[0][0];
if (vec[row][0]< mini) {
datafinal.push_back(mini);
vec[row].erase(vec[row].begin());
}
}
for (int k=0; k< datafinal.size(); k++){
cout << datafinal[k] << endl;
}
あなたのロジックは根本的に壊れているようです。同じ行が毎回最小の値を持つ可能性があるため、最終的にその行は完全に空になり、残りの行はそのまま残ります。最初の列には「最小のもの」はなくなります。なぜなら、行の1つが空であり、ロジックが未定義の動作になるからです。示されたコードにも明らかなバグがありますが、全体的なロジックがかなり壊れているように見えますが、それは議論の対象です。最初に正しいロジックを見つけ、実装の作業を開始してください。 –
あなたは私にいくつかの論理を教えていただけますか?私は初心者です。 – Juliusameri
残念ながら、あなたは行列をソートするために必要なロジックだけを知っています。私は、あなたのマトリックスが何であるか、それをどのように使用するのか分かりません。あなたはC++の初心者かもしれませんが、これはC++とは関係ありません。ロジックは、C++、Java、Python、Perl、またはその他の言語で***が実装されていた***と同じです。論理的には、まず行列のソート方法を定義する必要があります。それをコードに変換するだけです。 –