c++ - 如何 std::sort 一个 3 维 vector

标签 c++ sorting vector multidimensional-array

我有一个 vector 声明如下:

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 ),我试图将它排序为一个独立的二维 vector 并且只有 Myvector[x][y] 但我这样做时总是会出现编译错误。

我在另一个适用于 2d vector 的 stackoverflow 问题上找到了这段代码,但我有限的编程技能不允许我将它转换为 3d vector :

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 上使用它 我会得到

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}

最佳答案

您应该使用 std::sort 和一个用于排序的函数。如果我对你的理解正确的话,你想根据 2 维或 3 维进行排序。

bool comparison_function(const std::vector<std::vector<int> >& v1, 
                         const std::vector<std::vector<int> >& v2) {
  // calculate some comparison_result
  return comparison_result
}

使用这个函数你可以调用 std::sort:

std::sort(myVector.begin(), myVector.end(), comparison_function);

如果您的比较相当复杂,那么您应该使用仿函数而不是 comparison_function 来注入(inject)状态。

关于c++ - 如何 std::sort 一个 3 维 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17458278/

相关文章:

c++ - C++字符串处理中的重复字符跳过

mysql - 对另一个查询的最高值进行排序

c - 如何从 NSArray 生成 C vector 或数组?

c++ - vector 是链表的特例吗?

c++ - vector 幅度的特征数学库中的成员函数

c++ - 这些链接错误是什么意思? (C++)(MSVC++)

c++ - 为什么我不能在 C++ 中从该类的实例调用我的类的构造函数?

c++ - 为什么一般程序一般都是从0x8000开始?

android - 在 Kotlin 中对 ArrayList 进行排序

c# - 尝试更好地使用 Visual Studio!我如何找到有关排序方法的帮助?