zoukankan      html  css  js  c++  java
  • C++中sort排序之自定义排序cmp(入门)

    咳咳,第一次写这种博客,介绍一下sort的自定义排序cmp函数:

    sort和cmp的实现需要的头文件有:

    #include<algorithm>

    using namespace std;

    sort()是C++标准库中的排序函数,使用很方便,传进去数组的起始和结束地址就行,注意是左闭右开,默认的排序是<,从小到大,不过可以自己写一个cmpare()来自定义,下面缩写cmp()函数。
    cmp()函数的返回值要是bool,核心之处也是比较,因为sort默认是从小到大,所以在cmp如果还是要从小到大,那就a < b,返回值bool为true,不改变;而如果想要从大到小排,那么就要return a > b,因为默认a小于b,所以此时返回的bool就是false,要改变排序。

    如果你不懂的话  ,不,聪明的你肯定懂了。下面我先给一个例子:

    eg;

    #include<algorithm>
    using namespace std;
    bool cmp(int a,int b)
    {
    return a>b;//从大到小排序
    }

    当然如果定义的是一个结构体想进行排序,也是一样的

    eg;

    #include<algorithm>
    using namespace std;
    struct node//结构体定义 
    {
        int a;
        int b;
        int c;
    };
    bool cmp(node x,node y)//这个cmp是先按照a进行降序排序,如果a相同然后对b升序排序,如果b相同最后对c降序排序 
    {
        if(x.a!=y.a)
        return x.a<y.a;
        if(x.b!=y.b)
        return x.b>y.b;
        if(x.c!=y.c)
        return x.c<y.c;
    }

    这个cmp是先按照a进行降序排序,如果a相同然后对b升序排序,如果b相同最后对c降序排序 。是不是很简单,这只是比较低级的自定义排序

    先附上一道例题:

    http://www.fjutacm.com/Problem.jsp?pid=1214

    题解:https://www.cnblogs.com/Mangata/p/12253112.html不用谢我(逃)

    至于cmp的进阶我也不是太了解,等以后遇到问题了再说吧,够用就行,后面再更新哦!溜了溜了。
    文中的问题可以到评论区评论,收到消息后,我会及时改正哦!
  • 相关阅读:
    nginx正则配置解释和fastadmin
    Centos7中systemctl命令详解
    layer的iframe层的传参和回参
    centOS下jenkins
    centos下nginx安装和配置
    python文件目录练习题【一】
    python正则模块re使用案例
    python字符串常用方法
    Swoole的多进程模块
    swoole学习
  • 原文地址:https://www.cnblogs.com/Mangata/p/12253671.html
Copyright © 2011-2022 走看看