如何使用std::sort对向量的元素按行排序?
How can I sort elements of a vector by row using std::sort
我想对向量的元素按行排序,每行的大小不同,例如,如果我有一个
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_each
将std::sort
应用于外部向量中的每个元素。
这种方法包含了ideone,但我要注意使用上面不那么冗长和更易于阅读的版本。
试试这个:
for ( auto& items:v)
std::sort(items.begin(),items.end(),[](int lhs,int rhs) { return lhs<rhs; } );
相关文章:
- 查找两个排序向量中共有的元素
- C++ 如何比较n个排序的整数向量以找到互元素?
- 如何在 c++ 中根据第二个元素按降序对列表进行排序
- 对的排序向量 (std::vector<pair<int, int>>) 按对的第一个元素搜索并更新第二个元素值
- 高级选择排序 - 在一次迭代中搜索两个元素
- 为什么用户定义的函数不按照给定的顺序对相同长度的元素进行排序?
- 为什么这个选择排序算法仍然切换一个元素,当它已经是其他元素中最小的元素时?
- 快速排序 - 三个中位数枢轴选择 - 某些元素顺序不正确
- 将一系列已排序的元素划分为相邻组
- 如何通过保持第一个插入的位置来对列表中插入的其余元素进行排序?
- 保持排序的数据结构,允许log N插入时间,并且可以返回我在log N中查找的元素的索引
- "x"的所有元素都存在于"y"(排序向量)中吗?
- 如何根据对的第二个元素对 STL c++ 中的一组对进行排序?
- 如何在保持它们连接到同一元素的同时对 2 个数组进行排序?
- 使用 pair 创建priority_queue,以便在第一个元素相等时"<"第一个元素的排序,对第二个元素">"排序
- 如何将元素排序到矩阵C++
- 如何保持按第二个元素排序的对的优先级队列?
- 如何从两个数组中生成一对向量,然后使用CUDA/Thrust按对的第一个元素排序
- 部分排序数组,最后n个元素排序
- 如何对一对向量按降序排序,并按第二个元素排序