如何使用std::sort对向量的元素按行排序?

How can I sort elements of a vector by row using std::sort

本文关键字:元素 排序 向量 何使用 std sort      更新时间:2023-10-16

我想对向量的元素按行排序,每行的大小不同,例如,如果我有一个

vector v = { 
             {5, 3, 1, 2},
             {10, 1},
             {3, 2, 1},
             {4, 3, 2, 0}
}

final vector = { {1, 2, 3, 5},
                 {1, 10},
                 {1, 2, 3},
                 {0, 2, 3, 4}
}

我如何使用std::sort函数做到这一点?

这是我到目前为止所尝试的。

vector< vector<int> > v;
for(int i = 0; i < n; i++){
    sort(&v[i][i], &v[i][i] + n*m, less<int>());
}

您应该使用std::vector<std::vector<int>>来保存数据。让我们假设这个更改已经完成。

您的最终目标是对外部向量中的每个向量进行排序。这对于std::sort来说是非常容易的。

如果你想在原地操作,只需对for循环中的vector中的每个vector调用sort。

std::vector<std::vector<int>> vs = { 
    {5, 3, 1, 2},
    {10, 1},
    {3, 2, 1},
    {4, 3, 2, 0}
};
for(auto& v: vs) {
    std::sort(v.begin(), v.end());
}

Ideone。

类似地,但可读性差得多的是,使用std::for_eachstd::sort应用于外部向量中的每个元素。

这种方法包含了ideone,但我要注意使用上面不那么冗长和更易于阅读的版本。

试试这个:

for ( auto& items:v)
 std::sort(items.begin(),items.end(),[](int lhs,int rhs) { return lhs<rhs; } );
相关文章: