二叉堆基本模板(正稿)

PS:前面没用markdown,粘上来的代码连缩进都没有,没法看。。。首先澄清一下优先队列和二叉堆之间的关系,这是基本的计算机科学理论知识;优先队列是一种抽象数据结构,它的概念只关心它具有什么功能,而不关心这些功能是如何实现的;优先队列最常用二叉堆实现;形象地说,我们有一台黑箱,上面写着”优先队列“四个字,它带有实现优先队列功能(插入值,取出最值)的出入口;而拆开黑箱,里面是用二叉堆搭建的;
摘要由CSDN通过智能技术生成
  • PS:前面没用markdown,粘上来的代码连缩进都没有,没法看。。。
  • 首先澄清一下优先队列和二叉堆之间的关系,这是基本的计算机科学理论知识;
  • 优先队列是一种抽象数据结构,它的概念只关心它具有什么功能,而不关心这些功能是如何实现的;
  • 优先队列最常用二叉堆实现;
  • 形象地说,我们有一台黑箱,上面写着”优先队列“四个字,它带有实现优先队列功能(插入值,取出最值)的出入口;而拆开黑箱,里面是用二叉堆搭建的;
  • 现在C++标准模板库容器除了双向链表(list)和并查集以外都允许在OI中使用,因而实现优先队列基本上不用手写,用priority_queue就可以了;
  • 除非是应付笔试阅读题,需要熟悉手写二叉堆;
  • priority_queue包含在头文件queue中;
  • priority_queue默认是大根堆,定义格式为priority_queue<T>,其中T为基本数据类型或string(理论上来说其它通用容器也能这样搞,但实际不常用,如有需要改日另论);
  • 若需转为小根堆,需额外包含头文件vector,格式为priority_queue< T,vector<T>,greater<T> >;
  • 对于结构体,需要在结构体内重载<(小于号)运算符,代码如下:
#include<iostream>
#include<queue>
using namespace std;
struct Node{
    int aa,bb;
    bool operator<(const Node &anth)const
    {
        
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值