C++ c++;如何根据每个行列中的值对二维向量的行进行排序
目标:我有一个2d向量。我想按第4列中的值对其进行排序。 例如,我想对这个向量进行排序: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}}; 我假设我将不得不
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];
});