C++ sort函数第三个参数的理解

C++reference中,最复杂的重载函数定义如下:
void sort (RandomAccessIterator first, RandomAccessIterator last, Compare comp);

平时常用前两个参数,分别代表需要排序的起始位置和终止位置,第三个参数是排序的规则,可以省略,此时就是默认排序规则(从小到大排列)

comp函数可以自己编写,以适应不同的数据结构。比如要排列一个结构体,采用降序排列

#include <algrithm>
struct range
{
    int start;
    int end;
    range(): {start(0), end(0)}
    range(int a, int b): {start(a), end(b)}
};

bool comp(range a, range b)//比较函数的返回值一定是bool型,并且入口参数暂时到现在是两个,暂时没有更高的需要情景,以后可以补充
{
    return a.start>b.start;//想按什么情况来排序,就是这种情况下返回的值是true,但是这里面似乎不能用>=或者<=这样的符号
}


vector<range> r(10,a);
sort(r.begin(), r.end(), comp);
    

也可以使用C++库中已有的排序函数,在<functional>头文件中,有equal_to<Type>、not_equal_to<Type>、greater<Type>、greater_equal<Type>、less<Type>、less_equal<Type>,可以直接作为comp函数

sort(A,A+100,greater<int>());//降序排列
sort(A,A+100,less<int>());//升序排列

猜你喜欢

转载自blog.csdn.net/qq_34489443/article/details/86219772