如何std::对三维向量进行排序
how to std::sort a 3 dimensional 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),我曾尝试将其排序为一个独立的2d向量,并且只有Myvector[x][y],但在这样做的时候我总是会遇到编译错误。
我在另一个stackoverflow问题上发现了这段代码,它适用于2d矢量,但我有限的编程技能不允许我将其转换为3d矢量:
std::sort(myVector.begin(), myVector.end(), [](const std::vector< int >& a, const std::vector< int >& b){ return a[1] > b[1]; } );
谢谢你,Kaven
编辑
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}
如果我对所有x的myvector[x][y][z]按y=5的值进行排序,并对z=0(z可以从0变为5)的所有"y"值进行排序
如果我使用我想要的排序,并在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和一个用于排序的函数。如果我理解正确,你想根据二维或三维进行排序。
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来注入状态。
我不确定我是否正确理解这个问题,但如果你只想对每个矩阵的整数元素m[y][z]上的矩阵向量进行排序,那么我认为你需要以下代码:
#include <vector>
#include <algorithm>
using namespace std;
using Row = vector<int>;
using Matrix = vector<Row>;
using Matrices = vector<Matrix>;
/// Sort a vector of matrices on element M[y][z] of each of the matrices.
/// terminology: y and z as in original question
void sort_on( Matrices &matrices, int y, int z)
{
sort(
matrices.begin(), matrices.end(),
[y,z](const Matrix &lhs, const Matrix &rhs)
{
return lhs[y][z] < rhs[y][z];
});
}
int main()
{
Matrices myVector( 100000, Matrix( 7, Row(6,0)));
sort_on( myVector, 5, 0); // sort on M[5][0]
sort_on( myVector, 5, 5); // sort on M[5][5]
}
相关文章:
- 将结构向量排序为子组
- C++数组与向量排序(在我的情况下,向量比数组慢~2.5倍(无优化))
- 如何在对向量排序后更改索引值?c++
- C++向量排序给出0作为输出
- 将许多向量排序在一起
- 根据一个向量对多个向量排序
- 编译错误向量排序和联合
- C++我自己的函数进行向量排序
- 将字符串的向量排序为日期"yyyymmdd"
- C++ 通过使用旧向量进行预排序来改进向量排序
- C 向量排序 .h .cpp中的单独文件
- 向量排序-c++
- 将向量排序到一个无序映射c++11中
- 向量的向量排序
- c++向量排序方法编译失败,返回预期表达式
- 如何对bitset向量排序
- 向量排序的基础上只有先
- 我如何以相同的方式对两个向量排序,而条件只使用其中一个向量
- 列表排序和结构体向量排序之间的性能差距.c++
- 如何基于第二个字符串对字符串向量的向量排序