优先队列
优先队列有两个操作:
1、插入队列;
2、弹出最小元素;
常用(不用理解底层原理也能直接用)
c++中,STL里可以直接调用priority_queue,内部默认是使用大根堆实现的,也就是优先队列默认情况下是最大值优先
基本使用方法如下:
默认
#inlcude<isotream>
#inlcude<queue>//包含优先队列的头文件
int main(){
std::priority_queue<int> pq;
//插入元素
pq.push(10);
pq.push(30);
pq.push(20);
//移除和访问顶部元素
while(!pq.empty()){
std::cout<<pq.top()<<" ";
pq.pop();
}
return 0;
}
如果是一般数组,会输出{10,30,20};
但这是默认的优先数组,升序,每次先弹出最大值
输出{30,20,10};
创建最小值优先的优先队列
声明时指定比较函数
#include<isotream>
#include<queue>
#include<vector>
#include<functional>//包含std::greater
int main(){
std::priority_queue<int,std::vector<int>,std::greater&l