我想基于存储在元素sequ [i] [2]和sequ [i] [3]中的两个值对数组进行排序。

如果sequ [i] [2]具有相似的值,则按sequ [i] [3]值对其进行排序。

vector< vector<int> > sequ;
int m = 1024, n = 32;
sequ.resize(m);
for(int i = 0 ; i < m ; ++i){
sequ[i].resize(n);
}
sort(sequ[0].begin(),sequ[0].end());


不幸的是,我只知道如何对整个数组进行排序,但不知道特定的元素。我该怎么做呢

最佳答案

如果您使用的是C ++ 11,则应尝试以下方法。

sort(  secu.begin(), secu.end(), [](const vector<int>&v1, const vector<int>&v2) -> bool
{
  return v1[2] < v2[2] || (v1[2] == v2[2] && (v1[3] < v2[3]) );
});


我不是C ++ 11 lambda语法的超级专家,但您应该明白这一点。如果您没有C ++ 11,则可以随时推出自己的比较函子。

关于c++ - 排序多维数组/vector ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13928457/

10-11 16:02