在this問題排序通過柱二維陣列,我們看到一個很好的解釋由每個向量的第一元件和第二示例通過每個載體和排序它的元件將會排序矢量如何。
使用STL
我知道數組不是 C++的一級公民 STL的權力用戶,但我喜歡陣列(就像安德烈Alexandrescu)。
所以,讓我們考慮代碼:
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列,如下所示:
1 4 8
9 2 5
7 6 3
^
└--- last column by descending order
使用普通array
S(未載體)和std::sort
,有人可以幫我嗎?
謝謝
可惜你不能「列」使用'的std :: sort'排序。你可以將它們提取到一個單獨的數組(或向量)中(所以'newArray [0]'對應於'array2D [0] [2]'等),對它們進行排序並將排序後的值寫回到數組中。 –
在排序之前和之後,您將不得不調換矩陣。 – Jonas
一些程序員老兄和喬納斯:我認爲你們兩個都一樣,但在我讀到你們的意見之前,我認爲我錯了。現在我確信'std :: sort'只能應用於連續的數據結構。 – user7140484