Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ c++;如何根据每个行列中的值对二维向量的行进行排序_C++_Sorting_Vector_2d Vector - Fatal编程技术网

C++ c++;如何根据每个行列中的值对二维向量的行进行排序

C++ c++;如何根据每个行列中的值对二维向量的行进行排序,c++,sorting,vector,2d-vector,C++,Sorting,Vector,2d Vector,目标:我有一个2d向量。我想按第4列中的值对其进行排序。 例如,我想对这个向量进行排序: vector<vector<double>> vector1 = {{4,3,5,3}, {2,6,3,7}, {6,8,5,1}, {5,6,1,5}}; 我假设我将不得不

目标:我有一个2d向量。我想按第4列中的值对其进行排序。 例如,我想对这个向量进行排序:

vector<vector<double>> vector1 = {{4,3,5,3}, 
                                  {2,6,3,7}, 
                                  {6,8,5,1}, 
                                  {5,6,1,5}};
我假设我将不得不使用sort(),但在网上搜索之后,我仍然完全不知道如何进行此操作,因此任何关于代码的直接帮助,甚至网站或资源的指导,都将不胜感激。 谢谢

与自定义谓词一起使用,例如:

std::sort(vector1.begin(),
          vector1.end(),
          [] (const std::vector<double> &a, const std::vector<double> &b)
          {
              return a[3] < b[3];
          });
std::sort(vector1.begin(),
vector1.end(),
[](常数标准::向量&a,常数标准::向量&b)
{
返回a[3]
(当然,需要进行适当的错误检查)

这将根据给定谓词对“外部向量”(每个项是对应于一行的1D向量)的每个项进行排序,该谓词按其第4个元素(“行”中的第4列)对它们进行排序

如文档中所详细说明的,谓词应包含两项,如果第一项“严格小于”另一项,则返回true,否则返回false。当比较数字类型时,这很好而且简单,因为我们可以使用

std::sort(vector1.begin(),
          vector1.end(),
          [] (const std::vector<double> &a, const std::vector<double> &b)
          {
              return a[3] < b[3];
          });