priority_queue(优先队列)使用方法

摘要:
priority_queue默认情况下是一个大型根堆:您可以在定义priority_ queue<向量<大于<pq;除了模板指定为int;节点(intv);V(V){}booloperator<obj)const{returnv<obj.V;我们重载小于符号(在cpp中;例如,集合和映射记录结构)。

priority_queue默认是一个大根堆:

priority_queue(优先队列)使用方法第1张

并且出队方式与普通队列queue的front不一样,是top 。

如果想用小根堆,可以修改定义时的参数:

priority_queue<int,vector<int>,greater<int> > pq; 

除了指定模板为int之外,还指定了构造的容器是vector,重载的运算符是greater(大于)运算符。

priority_queue(优先队列)使用方法第2张

下面我们来看结构体。

首先我们定义结构体:

typedef struct Node{
    int v;
    Node(int v):v(v){
    }
    bool operator < (const Node& obj) const
    {
        return v<obj.v;
    }
};

我们重载了小于符号(在cpp中,一般来说都是重载小于符号。比如 set、map 记录结构体,sort时定义的cmp函数其实也是小于符号的定义),并且priority_queue也一如既往的执行着它输出最大值的操作:

priority_queue(优先队列)使用方法第3张

如果我们需要小根堆,只需要把重载的小于符号的判断条件改一下就好了。

注意:在执行top之前必须保证非空,不然会报错。

免责声明:文章转载自《priority_queue(优先队列)使用方法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇gulp使用(一)mysql回表下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

(转载)Linux下DIR,dirent,stat等结构体详解

摘自:http://www.liweifan.com/2012/05/13/linux-system-function-files-operation/ 最近在看Linux下文件操作相关章节,遇到了这么几个结构体,被搞的晕乎乎的,今日有空,仔细研究了一下,受益匪浅。 首先说说DIR这一结构体,以下为DIR结构体的定义: struct __dirstre...

Linux命令(十) 在文件或目录之间创建链接 ln

命令简介 ln 命令用于连接文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则会把前面指定的所有文件或目录复制到该目录中。若同时指定多个文件或目录,且最后的目的地是一个不存在的目录,则出现错误。 ln 命令会保持没一处链接文件的同步性,也就是说,只要改动其中的一处,其它地方的文件都会发生相同的变化。 常用参数 -b 每个已经...

iOS学习笔记之typedef

typedef unsigned long long weiboId; typedef 定义一个使用方便的类型,谓之为“宏定义“。 unsigned long long 是一种无符号的长长整型。本应该是这样,unsigned long long int ,这里省略了int ,编译器会自动认可。 unsigned long long ,是64 位的数据,8...

码元、符号、波特率、比特率等概念的了解

码元: 在数字通信中常常用时间间隔相同的符号来表示一位二进制数字。这样的时间间隔内的信号称为二进制码元,而这个间隔被称为码元长度。 符号: 即用于表示某数字码型[据位数不同,对应不同的键控调制方式]的一定相位或幅度值的一段正弦载波[其长度即符号长度]。 符号速率即载波信号的参数(如相位)转换速率,实际上是载波状态的变化速率。符号率越高,响应的传输速率也越高...

在Excel中输入特殊字符

  使用标准的计算机键盘你可以输入大约94种不同的字符,包括字母、数字和其它一些功能符号。但是我们在实际应用中会使用很多其它的字符,这些字符都不能通过标准的US键盘直接输入,例如标准字体Arial中就有大约200种不同的字符可以使用,包括英镑符号£,欧元符号€,版权符号©等。本文描述了如何在Excel中输入这些特殊字符。 使用键盘输入字符   如果你了解每...

原码、反码、补码知识详细讲解(此作者是我找到的讲的最细最明白的一个)

本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助! 一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1、机器数 一个数在计算机中...