在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