class priority_queue 简单介绍
今日发现要使用堆,然后priority_queue 使用的恰好是堆,默认是大根堆,这样的话,如果遇到需要用到大根堆,小根堆来处理问题的时候,可以使用这个结构。
常用方法与队列差不 push(),pop(),top()
上一部分代码,可以看出默认比较是 less 所以是大根堆,默认的话,里面的容器是vector
template<class _Ty,class _Container = vector<_Ty>,class _Pr = less<typename _Container::value_type> >class priority_queue{ // priority queue implemented with a _Container public:typedef priority_queue<_Ty, _Container, _Pr> _Myt;typedef _Container container_type;typedef typename _Container::value_type value_type;protected:_Container c; // the underlying container_Pr comp; // the comparator functor priority_queue(const _Pr& _Pred, const _Container& _Cont): c(_Cont), comp(_Pred){ // construct by copying specified container, comparator make_heap(c.begin(), c.end(), comp);}void push(value_type&& _Val){ // insert element at beginning c.push_back(_STD move(_Val));push_heap(c.begin(), c.end(), comp);}bool empty() const{ // test if queue is emptyreturn (c.empty());}size_type size() const{ // return length of queuereturn (c.size());}const_reference top() const{ // return highest-priority elementreturn (c.front());}void push(const value_type& _Val){ // insert value in priority order c.push_back(_Val);push_heap(c.begin(), c.end(), comp);}void pop(){ // erase highest-priority element pop_heap(c.begin(), c.end(), comp);c.pop_back();}void swap(_Myt& _Right){ // exchange contents with _Right _Swap_adl(c, _Right.c);_Swap_adl(comp, _Right.comp);}};
转载于:https://www.cnblogs.com/cycxtz/p/4742832.html
class priority_queue 简单介绍相关推荐
- [C++ STL] 各容器简单介绍
[C++ STL] 各容器简单介绍 目录 一.什么是STL? 二.容器(Containers) 2.1 vector 2.2 deque 2.3 list 2.4 set 2.5 map 2.6 容器 ...
- 遗传算法的简单介绍以及模式定理的简单证明
遗传算法 遗传算法(Genetic Algorithm,GA),最早是由美国的John holland在20世纪70年代提出.算法通过模拟达尔文生物进化论的自然选择以及遗传学机理的生物进化过程来搜 ...
- 2021年大数据ELK(十八):Beats 简单介绍和FileBeat工作原理
全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 Beats 简单介绍和FileBeat工作原理 一.Beats 二.FileB ...
- 2021年大数据ELK(十五):Elasticsearch SQL简单介绍
全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 Elasticsearch SQL简单介绍 一.SQL与Elasticsear ...
- 2021年大数据ELK(二):Elasticsearch简单介绍
全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 一.Elasticsearch简介 1.介绍 2.创始人 二.E ...
- iOS开发UI篇—多控制器和导航控制器简单介绍
iOS开发UI篇-多控制器和导航控制器简单介绍 一.多控制器 一个iOS的app很少只由一个控制器组成,除非这个app极其简单.当app中有多个控制器的时候,我们就需要对这些控制器进行管理 有多个vi ...
- 简单介绍一下R中的几种统计分布及常用模型
统计学上分布有很多,在R中基本都有描述.因能力有限,我们就挑选几个常用的.比较重要的简单介绍一下每种分布的定义,公式,以及在R中的展示. 统计分布每一种分布有四个函数:d――density(密度函数) ...
- LVS(Linux Virtual Server)三种负载均衡模型和十种调度的简单介绍
LVS(Linux Virtual Server)三种负载均衡模型和十种调度的简单介绍 LVS (Linux Virtual Server) LVS(Linux Virtual Server)其实就是 ...
- dubbo学习过程、使用经验分享及实现原理简单介绍
一.前言 部门去年年中开始各种改造,第一步是模块服务化,这边初选dubbo试用在一些非重要模块上,慢慢引入到一些稍微重要的功能上,半年时间,学习过程及线上使用遇到的些问题在此总结下. 整理这篇文章差不 ...
最新文章
- Android Studio cannot find declaration to go to
- rtmp官方协议详解
- 前端学习(2837):image图片标签
- OpenGL运用辅佐库创立规矩几许目标
- antd 怎么用ajax,react+dva+antd接口调用方式
- Java笔记-WEB算术验证码
- MiniDao支持ID自增主键策略,使用讲解
- 汉王考勤管理软件mysql数据库配置_求汉王考勤软件数据库表结构
- Visual Studio 各版本下载合集vs2005下载+vs2008下载+vs2010下载+vs2012下载
- c r 语言教程,R语言初级教程
- blendshapes
- 基于人性的量化交易:期货的反向跟单交易软件系统
- java关闭端口_使用java代码关闭指定端口的程序-windows
- jupyter note 打开md文件
- fedora 下常用软件安装
- 【学习笔记之Linux】工具之gcc/g++
- flex:1是什么?
- 驼峰转下划线下划线转驼峰
- 企业微信小程序开发(行事历)
- Grafana-01 - 面板(Panel)设置数据点的时间间隔以及单位
热门文章
- 【Linux】一步一步学Linux——basename命令(34)
- 【SDL】SDL学习笔记二 定时器
- linux中cd命令及范例,15个Linux中的“cd”命令的实际示例
- 计算机文化基础在线作业答案,中国石油大学17年秋《计算机文化基础》第一次在线作业答案...
- linux基础——linux进程间通信(IPC)机制总结
- 《Linux内核设计与实现》读书笔记(十六)- 页高速缓存和页回写
- BZOJ-2440 (莫比乌斯函数)
- HDU 5131 Song Jiang's rank list
- php函数知识点,php入门学习知识点七 PHP函数的基本应用_php基础
- 如何只下载一个github项目的某一特定文件夹或文件