# 自定义排序函数

sort 函数，其第三个参数可以是 `greater<int>()`，也可以是个 lambda 表达式 `[](int a, int b) {return b < a;}`，也可以是个类，不过要重载其函数调用运算符（其中 greater 模板类也是重载了函数调用运算符）也就是 `operator()()`。

priority\_queue，优先队列自定义函数有两种方法。

* 方法一，自定义 cmp 函数，重定义小括号

```cpp
struct cmp1{
	bool operator()(int x,int y)
	{
		return x>y;//小的优先级高 ,从小到大排 
	}
};
priority_queue<int,vector<int>,cmp1>q2;
```

* 方法二，自定义结构体，重定义小于号

```cpp
struct Student {
    string name;
    int num;
    int age;
    bool operator<(const Student &stu) const {
        return stu.age < this->age;
    }
};
priority_queue<Student> q;
```
