gpt4 book ai didi

c++如何按每行列中的值对二维 vector 的行进行排序

转载 作者:太空宇宙 更新时间:2023-11-04 15:13:13 25 4
gpt4 key购买 nike

目标:我有一个二维 vector 。我想按第 4 列中的值对其进行排序。例如我想对这个 vector 进行排序:

vector<vector<double>> vector1 = {{4,3,5,3}, 
{2,6,3,7},
{6,8,5,1},
{5,6,1,5}};

我想按第 4 列中的值对它的行进行排序,以便它的元素在行中的位置不变,但 vector 中的行位置发生变化,以便第 4 列中的元素按以下顺序排列:

 vector1 = {{6,8,5,1},
{4,3,5,3},
{5,6,1,5},
{2,6,3,7}};

我假设我将不得不使用 sort(),但是在网上搜索之后我仍然完全不知道如何去做,所以任何直接的代码帮助甚至是网站或资源的指导都是真的赞赏。谢谢!

最佳答案

使用 std::sort 使用自定义谓词,例如:

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

(当然有适当的错误检查)。

这将根据给定的谓词对“外部 vector ”的每个项目(每个项目都是对应于一行的一维 vector )进行排序,该谓词按它们的第 4 个元素(“行”中的第 4 列)对它们进行排序。

如文档中所述,谓词应采用两项,如果第一项“严格小于”另一项,则返回 true,否则返回 false。当比较数字类型时,这很好也很容易,因为我们可以使用 <运算符(operator)。在您的情况下,如果第 4 个元素小于,则一个“行”“小于”另一个“行”。

编辑:参见 here用于工作演示。

关于c++如何按每行列中的值对二维 vector 的行进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45494567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com