优先队列
我们知道c++的优先队列是priority_queue。这个容器的底层逻辑是堆。
对于基本数据类型,我们有:
priority_queue <int, vector <int>, less <int> > max_q;//大根堆
priority_queue <int, vector <int>, greater <int> > min_q;//小根堆
模板+仿函数实现
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
template <typename T, typename compare>
class heap
{
private:
vector <T> heap_v;//这里我们用vector充当底层容器
compare comp;//用于比较的仿函数
size_t size;//堆大小
public:
heap()
{
size = 0;
}
~heap()
{
}
void