本文实现的是STL中,容器priority_queue,该容器底层是一个大根堆。
template<class type>
class Priority_queue{
private:
vector<type> data; //使用vetcor存储数据
void UpFilter(int end) //向上过滤,将大的数往上挪动
{
int j = end;
int i = (j-1)/2;
type tmp = data[j];
while (j > 0)
{
if (tmp <= data[i]) break;
data[j] = data[i];
j = i;
i = (j-1)/2;
}
data[j] = tmp;
}
void