首页 > 其他分享 >优先队列(std_priority_queue)

优先队列(std_priority_queue)

时间:2022-12-25 16:57:08浏览次数:60  
标签:std priority 优先 队列 queue heap

title: 优先队列(std::priority_queue)
date: 2022-11-17 15:50:12
tags: 算法

本文章遵守知识共享协议 CC-BY-NC-SA ,转载时须在文章的任一位置附上原文链接和作者署名(rickyxrc)。推荐在我的个人博客阅读。

优先队列是一种数据结构,用于 删除/查询 集合中最 大/小 的元素以及插入元素。

前置知识:

  • 队列

当然,选手不需要在竞赛中实现这些,因为 STL 已经帮你实现好了!

我们只需要

std::priority_queue<int, std::vector<int>,std::greater<int> > heap1; // 小根堆
std::priority_queue<int, std::vector<int>,std::less<int> > heap2; // 大根堆

支持的操作

heap.push(val) // 插入一个元素
heap.top() // 返回 最大/最小 的元素
heap.size() // 返回堆的大小
heap.empty() // 判断堆是否空

模板题目及解析

对于堆的题目,这里不做太多点评,堆的使用比较灵活,需要在平时练习时加以注意。

P3378-【模板】堆

标签:std,priority,优先,队列,queue,heap
From: https://www.cnblogs.com/rickyxrc/p/17004215.html

相关文章

  • GetStdHandle获取标准设备句柄
     #include<stdio.h>#include<windows.h>intmain(void){TCHARch[]=__TEXT("我是中国人");intlen=lstrlen(ch);//返回字符长度//返回指......
  • LinkedBlockingQueue
    ​​https://www.jianshu.com/p/cc2281b1a6bc​​​继承关系图    /***节点类,用于存储数据*/staticclassNode<E>{Eitem;Node<E>ne......
  • C++提取出std::map中的key集合
    std::map<std::string,uint32_t>dictionarystd::set<conststd::string*>keySet;//std::back_inserter(keyVector)std::transform(dictionary.begin(),dictiona......
  • FastDFS客户端与自定义文件存储系统
    本文的前提是已经启动FastDFS的tracker和storage安装安装提供给大家的fdfs_client-py-master.zip到虚拟环境中 pipinstallfdfs_client-py-master.zip 链接:ht......
  • C++学习---cstdio的源码学习分析10-改变文件流文件流buffer函数setvbuf
    cstdio中的文件访问函数stdio.h中定义了一系列文件访问函数(fopen,fclose,fflush,freopen,setbuf,setvbuf),接下来我们一起来分析一下setvbuf对应的源码实现。-fopen:打开文件-......
  • JDK源码分析实战系列-PriorityBlockingQueue
    前言可以通过分析PriorityBlockingQueue来了解JUC中的线程安全的队列实现的一些套路,这些套路会在JUC中其他数据结构实现上反复出现,从而可以更合理的了解那些实现机制背后......
  • C++学习---cstdio的源码学习分析09-设置文件流buffer函数setbuf
    cstdio中的文件访问函数stdio.h中定义了一系列文件访问函数(fopen,fclose,fflush,freopen,setbuf,setvbuf),接下来我们一起来分析一下setvbuf对应的源码实现。-fopen:打开文件-......
  • workqueue机制
    软硬件协同设计是未来发展的主流,软硬件的界限越来越模糊,软硬件的设计思想是相通的,实现方法是各异的,实现的结果上当然也存在较大差别,因此,很有必要做好软硬件的协同设计。什......
  • Ubuntu18.04下调用fastdds实现通信
    提纲1、编写idl2、fastddsgen生成cpp的源代码文件3、编译生成可执行文件4、执行可执行文件完成通讯1、编写idl现在我们可以编写一个简单的IDL:2、fastddsgen生......
  • 【Python】关于print()、sys.stdout、sys.stderr的一些理解
    print()方法的语法:print(*objects,sep='',end='\n',file=sys.stdout,flush=False)其中file=sys.stdout的意思是,print函数会将内容打印输出到标准输出流(即sys.......