priority_queue

本质是堆

头文件

#include<queue>
using namespace std;

定义

priority_queue<int> q;                           //默认大根堆
priority_queue<int,vector<int>,greater<int>> q;  //小根堆
priority_queue<int,vector<int>,less<int>> q;     //大根堆
priority_queue <st1> q;                          //结构体定义

常用函数

q.top()    //返回堆顶元素值
q.empty()  //堆为空则返回true,否则返回false
q.size()   //返回元素个数
q.push()   //插入元素
q.pop()    //弹出堆顶元素

结构体定义类型

需要重载小于号,且要反向重载。
以下为实现以x为第一关键字,y为第二关键字的小根堆的实现。

struct st1{
	int x;
	int y;
};
bool operator < (st1 a,st1 b)
{
	if(a.x==b.x)return a.y>b.y;
	return a.x>b.x;
}
priority_queue <st1> q;

功能有限,如需更多功能请移步set。

posted @ 2022-03-12 21:28  wild_chicken  阅读(8)  评论(0)    收藏  举报