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的进阶我也不是太了解,等以后遇到问题了再说吧,够用就行,后面再更新哦!溜了溜了。
文中的问题可以到评论区评论,收到消息后,我会及时改正哦!
posted @ 2020-02-02 20:57  MangataTS  阅读(3224)  评论(2编辑  收藏  举报