jdo*_*ugh 0 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}};
Run Code Online (Sandbox Code Playgroud)
我想按第4列中的值对其行进行排序,以便它在行中的元素位置不变,但是向量中的行位置会被更改,以便第4列中的元素按以下顺序排列:
vector1 = {{6,8,5,1},
{4,3,5,3},
{5,6,1,5},
{2,6,3,7}};
Run Code Online (Sandbox Code Playgroud)
我假设我将不得不使用sort(),但在网上搜索后,我仍然完全不知道如何去做,所以任何直接帮助代码甚至指向网站或资源的方式都将非常感激.谢谢!
使用std::sort带有自定义谓词,例如:
std::sort(vector1.begin(),
vector1.end(),
[] (const std::vector<double> &a, const std::vector<double> &b)
{
return a[3] < b[3];
});
Run Code Online (Sandbox Code Playgroud)
(当然,有适当的错误检查).
这将相对于给定谓词对"外部向量"的每个项目(每个项目是对应于一行的1D向量)进行排序,给定谓词按第4个元素("行"中的第4列)对它们进行排序.
正如文档中所详述的那样,谓词应该采用两个项目,如果第一个"严格地"小于另一个,则返回true,否则返回false.比较数字类型时,这很简单,因为我们可以使用<运算符.在你的情况下,如果第四个元素小于,则一个"行"小于"另一个".
编辑:请参阅此处了解工作演示.