C++的 sort 函数实现按照指定维排序

头文件<algorithm>

sort函数默认可以实现顺序容器的从小到大排序,那么从大到小呢,若容器为二维容器,那么还能使用sort排序吗?

1. 默认从小到大排序

vector<int> vec;
//赋值
//
//...
sort(vec.begin(),vec.end());

2. 从大到小排序,把里面的a>b改为a<b就实现从小到大

//定义一个模板函数,也可以只定义函数,T和要排序的数组里的元素类型
template<T>
bool cmp(T a,T b)
{
    //这样就可以实现从大到小排序了
    return a>b;
}

int main()
{
    vector<int> vec;
    //赋值
    //
    //...
    //后面加上cmp参数
    sort(vec.begin(),vec.end(),cmp);
}

3. 若待排序数组为一个二维数组

int main()
{
    vector<vector<int> > vec;
    //赋值
    //
    //...
    //后面加上cmp参数
    sort(vec.begin(),vec.end());
}

默认按照第一维进行从小到大排序

 如[[1,2],[0,3]]→sort(vec.begin(),vec.end());→[[0,3],[1,2]]

4. 按照第二维从大到小排序

//就不能使用模板了
bool cmp(vector<int> a,vector<int> b)
{
    return a[1]>b[1];
}

int main()
{
    vector<vector<int> > vec;
    //赋值
    //
    //...
    //后面加上cmp参数
    sort(vec.begin(),vec.end(),cmp);
}

如[[1,2],[0,3]]→→[[0,3],[1,2]]       第二维从大到小(3>2)。

end

 

 

 

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值