sort中用lambda函数

sort函数是默认从小到大排列的,如果我们想要改变排序方式就要自己写个cmp函数,如果排列方式比较简单的话我们可以在sort函数中用一个简单的lambda函数。

源码及讲解

对非结构体的数组

前面的[]表示对数的操作方式,如果填个&说明是直接操作数,不用copy,但是这个我们一般用不到,里面就保持空就行了。()里面是参数,就和普通的cmp函数的一样。

int main()
{
    int a[] = {1, 2, 3, 4, 5, 6, 7, 8};
    sort(a, a + 8, [](int x, int y){
        return x > y;
    });

    for (int i = 0; i < 8; i ++ ) cout << a[i] << ' ';

    return 0;
}

对结构体的数组

代码和上面的差不多,就是把()里面的参数类型改成结构体的tag,举个例子

struct students
{
    int score;
    int age;
}student[5];

这里结构体的tag就是students,那么我们sort的时候就可以这样写sort(student, student + 5, [](students x, students y){ return x.score < y.scoer; });

THE END