priority_queue 优先队列
优先队列是单向队列的一种,可以按照默认或自定义的一种方式来对队列中的数据进行动态排序
template<class _Ty, class _Container = vector<_Ty>, class _Pr = less<typename _Container::value_type> > //默认以vector为容器的
class priority_queue
{ // priority queue implemented with a _Container
public: typedef _Container container_type; typedef typename _Container::value_type value_type; typedef typename _Container::size_type size_type; typedef typename _Container::reference reference; typedef typename _Container::const_reference const_reference; priority_queue() : c(), comp() { // construct with empty container, default comparator } explicit priority_queue(const _Pr& _Pred) : c(), comp(_Pred) { // construct with empty container, specified comparator } 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); //参见《STL系列之四 heap 堆的相关函数》 } template<class _Iter> priority_queue(_Iter _First, _Iter _Last) : c(_First, _Last), comp() { // construct by copying [_First, _Last), default comparator make_heap(c.begin(), c.end(), comp); } template<class _Iter> priority_queue(_Iter _First, _Iter _Last, const _Pr& _Pred) : c(_First, _Last), comp(_Pred) { // construct by copying [_First, _Last), specified comparator make_heap(c.begin(), c.end(), comp); } template<class _Iter> priority_queue(_Iter _First, _Iter _Last, const _Pr& _Pred, const _Container& _Cont) : c(_Cont), comp(_Pred) { // construct by copying [_First, _Last), container, and comparator c.insert(c.end(), _First, _Last); make_heap(c.begin(), c.end(), comp); } bool empty() const { // test if queue is empty return (c.empty()); } size_type size() const { // return length of queue return (c.size()); } const_reference top() const { // return highest-priority element return (c.front()); } reference top() { // return mutable highest-priority element (retained) return (c.front()); } void push(const value_type& _Pred) { // insert value in priority order c.push_back(_Pred); push_heap(c.begin(), c.end(), comp); } void pop() { // erase highest-priority element pop_heap(c.begin(), c.end(), comp); c.pop_back(); } protected: _Container c; // the underlying container _Pr comp; // the comparator functor
};
用法:
1、默认用<运算符进行排序
大的先输出
2、priority_queue<type, vector<type>, fun<type>>pq;
vector<type>为容器类型
fun<type>为比较函数
3、自定义优先级
重载<
struct node
{friend bool operator< (node n1, node n2){return n1.priority < n2.priority;}int priority;int value;
};
转载于:https://www.cnblogs.com/KennyRom/p/5968191.html
priority_queue 优先队列相关推荐
- c++ std::priority_queue优先队列
template <class T, class Container = vector<T>,class Compare = less<typename Container:: ...
- [C++STL教程]7.priority_queue优先队列入门学习!零基础都能听懂的教程
不知不觉C++STL教程系列已经第7期了.之前我们介绍过:vector, queue, stack, set, map等等数据结构. 今天我们来学习一个新的stl容器:priority_queue优先 ...
- priority_queue优先队列的使用方法
说到优先队列,大家肯定想到了队列(这肯定是对于学过队列的同学来说,当然了,没学过也没事,对于本篇文章没什么问题滴),队列的特征是后进后出,按照排队先来后到的顺序的,本篇文章介绍的priority_qu ...
- c++ 优先队列_std::priority_queue(优先队列)
priority_queue<Type, Container, Functional> //Type 数据类型, //Container 容器类型(必须是用数组实现的容器,比如vector ...
- priority_queue优先队列
引入 优先队列是一种特殊的队列,在学习堆排序的时候就有所了解. 那么优先队列是什么呢? 说白了,就是一种功能强大的队列. 它的功能强大在哪里呢? 四个字:自动排序. 优先队列的头文件&&a ...
- priority_queue优先队列的用法总结
最近在刷题时很多次遇到了优先队列的用法,在这里mark一下,做个总结. 介绍: 既然是队列,那么先要包含头文件#include , 他和queue不同的就在于:我们可以自定义其中数据的优先级, 让优先 ...
- STL关于queue(队列)与priority_queue(优先队列)的一些笔记
queue queue就是队列, 在STL中主要实现了一个先进先出的容器 使用queue应该先添加头文件#include<queue> queue<typename>name; ...
- priority_queue(优先队列)的简单构造与用法
priority_queue priority_queue 优先队列,其底层是用堆来实现的.在优先队列中,队首元素一定是当前队列中优先级最高的那一个. 在优先队列中,没有 front() 函数与 ba ...
- STL(七)——队列queue优先队列priority_queue
一.queue 1.特点:先进先出(FIFO-first in first out) 只允许在表的前端(front,称为队头)进行删除操作,在表的后端(rear,称为队尾)进行插入操作 2.基本操作 ...
最新文章
- 用Matplotlib跟踪疫情实时监控2019-nCoV
- 每天坚持一个CSS——社会人
- WordCount代码详解
- python开发中遇到的难题_初学者在Python开发中常见的问题(上)
- 22 FI配置-财务会计-定义收益留存科目(Retained Earning Account)
- 扩展JS格式化(Format)功能及评论树
- 零基础带你学习MySQL—日期函数(十五)
- transform,translate,transition 的区别
- 关于架设流媒体服务器与DRM加密问题
- (转帖)無號數及有號數的乘加運算電路設計(Verilog)
- 使用永恒之蓝漏洞攻击电脑
- 数据挖掘概念与技术第三版 范明、孟晓峰译 第三章习题答案
- pp助手苹果版_PP助手将下架?越狱时代已经过去,到底是该喜该悲
- 第四届“泰迪杯”数据分析技能赛-赛题A:《通讯产品销售和盈利能力分析》报告
- Java成员变量初始化顺序
- 麦吉尔大学计算机专业介绍,麦吉尔大学计算机专业申请要求及需要提交的材料...
- 波司登 × 阿里云 × 奇点云:教科书式的数智化转型实践
- Ubuntu 下无线网卡RTL8723BE不稳定的解决办法
- win18系统如何打开c语言,控制面板在哪里打开(Windows打开控制面板的方法)
- BFGS(Broyden-Fletcher-Goldfarb-Shanno)
热门文章
- System.BadImageFormatException: 试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)...
- Mplayer的秘密功能
- WCF 4 高级编程 - 读书笔记
- ASP+Access数据库的终极安全大法18则(原创)
- python类中包含一个特殊的变量、它可以访问类的成员_Python 类的特殊成员介绍...
- fstab自动挂载_Linux系统挂载硬盘详解
- python引入模块教程_python进阶教程之模块(module)介绍
- M - 简单字符串排序
- java this关键字的使用_Java this 关键字的使用方法详解
- linux 访问centos共享,CentOS访问Windows共享