C++——二维vector排序(sort用法)

一、自定义排序函数:

(目标:对 二维vector points中第二个元素进行从小到大排序)

 static bool cmp(const vector<int>& a,const vector<int>& b){
    return a.back()<b.back();
 }
sort(points.begin(),points.end(),cmp);

二、Lambda 函数:

(速度比方法1稍慢)

sort(points.begin(),points.end(),[](vector<int>a, vector<int>b){return a[1]<b[1];}); 
// return a[0]<b[0] 实现二维数组中第1个关键字的从小到大排序
// return a[1]<b[1] 实现二维数组中第2个关键字的从小到大排序

三、参考文章:

  1. C++ 二维vector排序(sort用法)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++中,`std::vector`是一个动态数组容器,它可以存储任意类型的元素。如果你想要对二维`vector`(实际上是一维`vector`,因为每个元素又是一个`vector`)进行排序,通常你会先将其视为一维数据结构,然后按照需要的排序方式进行操作。 例如,如果你想按列进行排序,即每一行的数据都被看作是一个独立的一维向量,你可以对每一列的向量应用`sort`函数,然后再对整个二维向量的行进行排序。如果想整体排序,可以将所有元素放入一个大`vector`或者自定义的结构体中,通过指针遍历并传递给`sort`,指定比较规则。 ```cpp // 假设有一个二维vector std::vector<std::vector<int>> matrix; // 首先假设我们有两列数据 for (auto &row : matrix) { std::sort(row.begin(), row.end()); // 按照当前列进行排序 } // 如果你想按行排序整个矩阵,可以这样做: std::vector<int> flattened; // 或者创建一个新的vector来存放扁平化的数据 flattened.reserve(matrix.size() * matrix.size()); for (const auto &row : matrix) { flattened.insert(flattened.end(), row.begin(), row.end()); } std::sort(flattened.begin(), flattened.end()); // 对所有元素排序 // 然后再还原到二维矩阵中,如果需要 matrix.clear(); for (size_t i = 0; i < flattened.size(); i += matrix.size()) { std::vector<int> sortedRow(flattened.begin() + i, flattened.begin() + i + matrix.size()); matrix.push_back(sortedRow); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值