【STL】C++ 优先队列 priority_queue


之前数据结构课程所学只是简单的队列,其在STL中的用法已整理到 【STL】C++ 队列 queue。优先队列是第一次接触,现简单整理优先队列的用法。

简介

优先队列,行为有些像队列,但先出队列的元素不是先进队的元素,而是队列中优先级最高的元素。

头文件

与队列同在 queue 头文件里。

#include<queue>

priority_queue<Type, Container, Functional>

#include<queue>
/*默认越大正数优先级越高*/
priority_queue<int> p; //默认大顶堆,入队后降序排序
/*
Type 数据类型, 如int
Container 容器类型, 如vector<int>,不能用list
Functional 比较方式
*/
priority_queue<Type, Container, Functional>
priority_queue<ListNode*, vector<ListNode*>, Cmp> heap;

C++ operator重载操作符

//C++符号重载方式
返回值类型 operator 运算符名称 (形参表列){
    //TODO:
}

//识别到符号()时,会调用operator()( , )函数
bool operator() (ListNode* a, ListNode* b) {
	return a->val > b->val;
}

Functional 结构体(当函数用)

struct Cmp {
	//需要重载()
	//识别到符号()时,会调用operator()( , )函数
	bool operator() (ListNode* a, ListNode* b) {
		//默认大根堆把大的放到前面, 把<换成>实现把小的放前面
		return a->val > b->val;
	}
}

常用操作

//访问队头元素,与队列不同,优先队列没有front()和back()
p.top();  

//入队,插入元素到队尾
p.push(); 

//出队,删除队头元素,但不返回被弹出元素的值。
p.pop(); 

//判断优先队列是否为空,为空则返回 1,否则返回 0
p.empty();

//返回元素个数
p.size();

//交换内容
p.swap();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值