听完左神的课,自己来用stl来实现一下大小根堆,顺便加深一下印象
C++库中带有priority_queue<>函数库可以直接拿来用,默认是大根堆
实现小根堆的时候,很多大神介绍了重载运算符的方法,但是,我自己并不打算用这种方法
大神的讲解
#include<bits/stdc++.h>
using namespace std ;
priority_queue<int> qi ; /// 大根堆的定义
int a[5] = {3,5,9,6,2} ;
struct cmp
{
bool operator()(int a , int b)
{
return a>b ;
}
};
int main()
{
priority_queue<int,vector<int>,cmp> qq ; /// 小根堆的定义,这里重载了cmp,用来实现小根堆
for(int i = 0 ; i < 5 ; i ++) ///
{
qi.push(a[i]) ;
}
for(int i = 0 ; i < 5 ; i ++)
{
cout << qi.top() << endl;
qi.pop() ;
}
cout << endl;
for(int i = 0 ; i < 5 ; i ++)
{
qq.push(a[i]) ;
}
for(int i = 0 ; i < 5 ; i ++)
{
cout << qq.top() << endl;
qq.pop() ;
}
return 0 ;
}