今天来聊堆。
先不要管二叉树之类的东东,那些不用管
堆的定义:
一个队列,先弹出小(大)的数
定义一个堆:
小:
priority_queue<int,vector<int>,greater<int>> a;
大:
priority_queue<int> a;
结构体类型大根堆重载小于号,小根堆重载大于号。
STL能用的操作:
push:a.push(x);//将x放进a
top:x=a.top();//x取a的最小或最大
pop:a.pop();//将a的最小或最大弹出(即删除)
这个就是STL的堆了(头文件是#include<queue>
)