优先队列与从重载运算符
优先队列
一定是完全二叉树
//降序队列(默认大根堆)
priority_queue<int>q;
priority_queue<int,vector<int>,less<int> >q;
//升序队列(小根堆)
priority_queue<int,vector<int>,greater<int> > q;
重载运算符
当我们在容器中使用结构体时,如果该容器是有序的,则需要进行重载运算符
struct F{
int a,b;
//小知识点:结构体的初始化函数
F(int _a,int _b){
a = _a;
b = _b;
}
//重载 < 运算符
bool operator <(const F f)const{
if(a < f.a) return true;
else if(a == f.a && b < f.b){
return true;
}
else if(a == f.a && b >= f.b){
return false;
}
else{
return false;
}
}
//重载 == 运算符
bool operator ==(const F f)const{
if(a == f.a && b == f.b) return true;
return false;
}
};
int main()
{
F f1(1,2),f2(1,2);
printf("%d\n",l1 < l2);
printf("%d\n",l1 == l2);
}