Vector 自定义Sort

vector支持sort函数,但是默认是升序。如果要降序呢?

那么可以这样操作: 

方法一:升序排序之后,用 reverse 反转即可。

方法二:重写sort第三个参数

重写sort第三个参数:

对于常见的数据类型,int、string等我们可以直接重写一个函数或者lambda表达式。

重写函数:

sort(begin(vec), end(vec), cmp);

bool cmp(const int& a, const int& b){
    return a <= b ;//升序
}

bool cmp(const int& a, const int& b){
    return a > b ;//降序
}

lambda表达式:

sort(begin(vec), end(vec), [](const int& a, const int& b) { return a <= b });//升序
sort(begin(vec), end(vec), [](const int& a, const int& b) { return a > b });//降序

对于排序的是类和的体我们可以用operator 运算符来比较

结构体或者类对象:

struct Student{
    string name;
    int grade;
    Student(string name, int grade) : name(name), grade(grade){}
    bool operator < (const Student& rhs) const{
        return grade < rhs.grade
        || (grade == rhs.grade && name < rhs.name);
    }
 
    boolo perator > (ostream& output, const Student& s){
        return grade > rhs.grade
        || (grade == rhs.grade && name > rhs.name);
    }
};

当然你也可以使用lambda表达式在来对比较:

sort(begin(vec), end(vec), [](const Student& lhs, const Student& rhs) {
                return lhs.grade < rhs.grade 
                    || (lhs.grade == rhs.grade && lhs.name < rhs.name); });
 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值