结构体内重载定义
【代码模板】
struct node{
        int u, v;
        friend bool operator < (node a , node b){
            if(a.u == b.u) return a.v > b.v;
            return a.u > b.u; 
            //优先队列中的排序大小与结构体里重载的符号相反
            //sort()函数中的排序大小与结构体里重载的符号一致
        }
};
【注意】 return中的 “>” 和 “<” 符号
 优先队列中的排序大小与结构体里重载的符号相反
 sort()函数中的排序大小与结构体里重载的符号一致
【声明方式】
优先队列: priority_queue<node> que;
 添加或删除n项,一次一个,时间复杂度为nlog(n)
sort()函数 头文件#include <algorithm>
 时间复杂度:nlog(n)
【使用方法】
优先队列:
对比普通数据类型优先队列,这里以int为例:
priority_queue<int, vector<int>, less<int> > q1; // 大顶堆,大元素在上
//对于基础类型 默认是大顶堆
priority_queue<int> a; 
//等同于 priority_queue<int, vector<int>, less<int> > a;
priority_queue<int, vector<int>, greater<int> > c;  //这样就是小顶堆
priority_queue<int, vector<int>, greater<int> > q2; // 小顶堆,小元素在上
sort()函数:
 默认升序:sort(数组名, 数组名+n);
加上cmp比较函数:sort(数组名, 数组名+n, cmp);
数组排序:
int a[n];
static bool cmp(int a, int b){
	return a > b;
}
sort(a, a + n, cmp);
结构体排序:
Student Stu[100];
bool cmp2(Student a,Student b)
{
    return a.id > b.id;//按照学号降序排列
    //return a.id < b.id;//按照学号升序排列
}
sort(Stu,Stu+100,cmp2);
使用标准库函数:
 升序:sort(begin,end,less<data-type>())
 降序:sort(begin,end,greater<data-type>())










