【发布时间】:2013-07-01 18:00:26
【问题描述】:
我有一个向量声明如下:
vector<vector<vector<int> > > myVector (148995,vector<vector<int> >(7,vector <int>(6,0)));
我希望能够使用 std::sort 对其进行排序。
我想通过Myvector[x][y][z]中y = 5的值对y的所有值进行排序
我希望能够一次对一个 z 进行排序(z 值可以从 0 到 5 ),我试图将它作为一个独立的 2d 向量排序并且只有 Myvector[x][y] 但我这样做时总是会出现编译错误。
我在另一个适用于 2d 矢量的 stackoverflow 问题上找到了此代码,但我有限的编程技能不允许我将其转换为 3d 矢量:
std::sort(myVector.begin(), myVector.end(), [](const std::vector< int >& a, const std::vector< int >& b){ return a[1] > b[1]; } );
谢谢你, 卡文
编辑
myVector[x][y][z]
Myvector[x] = {0,1,2,3,...,200 000}
myvector[0][y][0] = {44,30,21,15,1,600,25}
myvector[1][y][0] = [25,24,10,7,1,700,30}
myvector[0][y][2] = {34,20,11,6,1,400,25}
myvector[1][y][2] = [33,24,10,7,1,300,40}
如果我按 y = 5 的值对所有 x 的 myvector[x][y][z] 进行排序,并对 z = 0 的所有 'y' 值进行排序(z 可以从 0 变为 5)
如果我要使用我想要的排序并在 z = 0 上使用它 我会得到 p>
myvector[1][y][0] = {44,30,21,15,1,600,25}
myvector[0][y][0] = [25,24,10,7,1,700,30}
myvector[0][y][2] = {34,20,11,6,1,400,25}
myvector[1][y][2] = [33,24,10,7,1,300,40}
【问题讨论】:
-
首先,您必须考虑对您而言,一个向量大于另一个向量意味着什么。在示例中,您只提供了第一个坐标很重要。那么——你的情况应该如何?
-
我如何看到这个向量是 6 个表相互叠加,x 最多 200000,y 最多 7,z 最多 6。我想在一个排序命令中进行排序基于第 5 个值的 7 个值的 y“行”。最大值应为 x =0,最小值应为 x = 200000
-
好的,但是当一个向量不相等时,更大,小于另一个? IE。
(1,2,3)比(1,3,2)大吗? -
发布一个数字示例,因为我不确定您将要做什么和实现什么。
-
我是否理解正确,您想在不更改这些矩阵的情况下对(在本例中)148995 2D 矩阵的向量进行排序,并希望根据 M[5][n] 的值对它们进行排序,其中 n是一个可以从排序更改为排序的参数吗?
标签: c++ sorting vector multidimensional-array