我想排序2D矢量(10x100)內的數字。C++ 2D矢量排序
我的想法是首先按行排序,然後在第一列中找到最小的數字並將其保存在一個新的一維向量中,然後刪除列中最小的一個,依此類推直到最後一個數字。
我的代碼是這樣的,但它不起作用。
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;
}
你的邏輯似乎從根本上被打破。由於每行可能有同一行具有最小值,因此最終該行將完全爲空,而其餘行保持不變。在第一列中將不再是「最小的一個」,因爲根據定義,其中一行將是空的,並且您的邏輯將導致未定義的行爲。所顯示的代碼也有一個明顯的錯誤,但由於您的整體邏輯看起來相當破碎,這是一個有爭議的問題。首先找出正確的邏輯,然後開始執行實施。 –
你能告訴我一些邏輯嗎?我只是一個初學者。 – Juliusameri
不幸的是,只有你知道你需要對矩陣進行排序的邏輯。我不知道你的矩陣是什麼,以及你打算如何使用它。儘管你可能是C++的初學者,但這與C++無關。在C++,Java,Python,Perl或任何其他語言中實現***的邏輯是一樣的。首先,您需要以邏輯的方式定義您需要如何對矩陣進行排序。只有將它翻譯成代碼。 –