STL priority_queue使用

2023-05-16

转自:http://www.cnblogs.com/lvpengms/archive/2010/04/05/1704669.html

 

包含priority_queue 的头文件是 <queue>

 

priority_queue类的主要成员:

priority_queue();    //默认构造函数,生成一个空的排序队列

priority_queue(const queue&);    //拷贝构造函数

priority_queue& operator=(const priority_queue &);    //赋值运算符重载

priority_queue 的私有成员:

value_type;   //priority_queue中存放的对象类型,它和priority_queue中的T类型相同

priority_queue(const Compare& comp);    //构造生成一个空的priority_queue对象,使用comp作为priority_queue的comparison

priority_queue(const value_type* first, const value_type* last);    //带有两个参数的构造 函数,使用默认的Comparison作为第三个参数

size_type;    //正整数类型,和Sequence::size_type类型一样。

bool empty() const;    //判断优先级队列是否为空,为空返回true,否则返回false

size_type size() const;    //返回优先级队列中的元素个数

const value_type& top() const();    //返回优先级队列中第一个元素的参考值。

void push(const value_type& x);    //把元素x插入到优先级队列的尾部,队列的长度加1

void pop();    //删除优先级队列的第一个值,前提是队列非空,删除后队列长度减1

 

priority_queue<Type, Container, Functional>

 如果我们把后面俩个参数缺省的话,优先队列就是大顶堆,队头元素最大。(这点由上面的程序可以看出)

Parameter

Description

Default

T

The type of object stored in the priority queue.

 

Sequence

The type of the underlying container used to implement the priority queue.

vector<T>

Compare

The comparison function used to determine whether one element is smaller than

another element. If Comparex,y) is true, then x is smaller than y. The element

returned by Q.top) is the largest element in the priority queue. That is, it has the

 property that, for every other element x in the priority queue, Compare(Q.top(), x) is false.

less<T>

 

自定义类型重载 operator< 后,声明对象时就可以只带一个模板参数。

但此时不能像基本类型这样声明

priority_queue<Node, vector<Node>, greater<Node> >;

原因是 greater<Node> 没有定义,如果想用这种方法定义

则可以按如下方式:

 


  
  
#include < iostream >
#include < queue >
using namespace std;
struct Node
{
int x,y;
Node( int a = 0 , int b = 0 ):x(a),y(b){}
};
struct cmp
{
bool operator ()(Node a,Node b){
if (a.x == b.x)
return a.y > b.y;
return a.x > b.x;
}
};
int main(){
priority_queue < Node,vector < Node > ,cmp > q;
for ( int i = 0 ; i < 10 ; ++ i)
{
q.push(Node(rand(),rand()));
}
while ( ! q.empty())
{
cout << q.top().x << " " << q.top().y << endl;
q.pop();
}
return EXIT_SUCCESS;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STL priority_queue使用 的相关文章

随机推荐

  • ECS基本概念 一

    基本概念 ECS xff08 Entity Component System xff09 由三部分组成 Entity 是一个id xff0c 目的是将Component逻辑地分组在一起 xff0c 在源码中是一个结构体 xff0c 包含一个
  • cas开发遇到bug总结

    1 keytool工具java io IOException Keystore was tampered with or password was incorrect 原因有两种 xff1a 1 密码被修改过了 xff0c 所以证书无法通过
  • 【Unity游戏开发】SDK接入与集成——小白入门篇

    阅读目录 一 简介二 浅谈常用的两种接入方案三 开始接入 xff01 Unity与Android的交互四 结语 回到顶部 一 简介 通常一款游戏开发到后期 xff0c 一般都会涉及到第三方SDK的接入与集成 xff0c 对于不熟悉SDK接入
  • Unity 音频从某一时间开始播放

    最近在做一个音乐类的项目 xff0c 遇到了音乐追帧问题 xff0c 记录一下 挺简单的一个问题 xff0c 在百度上搜了好久 xff0c 然后跟着看到的唯一一篇博客试了试 xff0c xff08 当时还以为终于找到了 xff09 xff0
  • GameFramework框架解读(AB打包、加载、热更流程 基于《Star Force》Demo)

    目录 1 单机模式 xff08 1 xff09 先打包进行设置 xff1a xff08 2 xff09 Start Build Resources 得到文件 2 热更 流程 xff08 1 xff09 修改第一步中的Resource 如图
  • Unity 改变物体顶点色

    扩展方法 xff1a Mesh的部分信息展示 xff1a Mesh挂上顶点采样shader xff1a
  • java对字符串数组进行排序

    import java util Arrays import java util Random public class Arrays o3 public static void main String args 自定义字符串 String
  • 判断某一点是否在包围盒内:Bounds.Contains

    蒙皮网格获取方法 xff1a SkinnedMeshRenderer xff1a m Bounds 61 colliderTran GetComponent lt SkinnedMeshRenderer gt sharedMesh boun
  • 关于协程记录一下

    void Start Print 61 Prints private IEnumerator Print void Update if Input GetKeyDown KeyCode S StartCoroutine Print if I
  • Android 10 安装兼容

    android exported 61 true
  • Unity 查Crash

    首先获得堆栈信息 xff0c AS 然后找Unity的NDK目录下的arm linux androideabi addr2line xff08 对应arm v7 xff09 xff0c 或者aarch64 linux android add
  • Unity TextMeshPro 毛边问题

    如图所示 xff1a 边缘像素透明度拉高了 结果是因为开了主相机的Post Processing 加低级抗锯齿 xff08 FXAA xff09 导致的 如图 xff1a 关闭Post Processing 或者关闭抗锯齿可解决 也可采用高
  • UnityWebRequest 本地读StreamingAssets写入persistentDataPath(坑啊)

    下文为自己以前写的 博客 xff0c 可谓打脸啊 xff08 知其然不知其所以然 xff09 以下为 Android 环境 本地读写数据 xff08 踩的坑 xff09 xff1a UnityWebRequest 加载本地文件的时候需要加
  • Application.logMessageReceived

    监听Unity的打印事件 xff0c 如常规打印 xff0c 报错等等 如下代码为自制的打印日志 xff1a List lt string gt mWriteTxt 61 new List lt string gt void OnEnabl
  • Unity编辑器篇(一)Scene界面

    xff08 一 xff09 xff0c 向屏幕中心发射一条射线 lastActiveSceneView 类似于 Game场景的相机 xff0c xff08 其实我也没搞懂是什么东西 xff09 Ray ray 61 SceneView la
  • 计蒜客-炮台实验

    蒜头君在玩一个战争模拟游戏 xff0c 他有高度为 1 2 3 ldots n1 2 3 n 的炮台各一个 xff0c 他需要把这 nn个炮台从左往右排成一行 xff0c 并且炮口都朝向右边 在这个游戏中 xff0c 所有炮台发射的炮弹会摧
  • Dockerfile详解超全

    Dockerfile详解 环境介绍指令介绍FROMMAINTAINERLABELADDCOPYEXPOSEENV在Dockerfile中使用变量的方式 RUNCMDRUN amp amp CMDENTRYPOINTVOLUMEUSERWOR
  • Debian8 修改root密码

    1 当系统启动进入GNU GRUB界面 xff0c 按esc停留在此页面 xff0c 按上下的方向键可以进行选择 2 选中要修改的系统 xff0c 按e进入编辑状态 xff0c 在linux开头的这一行末尾加上 init 61 bin ba
  • debian10 配置ntp服务

    debian10 配置ntp服务 1 安装ntp2 配置3 验证 服务器不能连外网 xff0c 内网中有一台授时服务器 xff0c 内网也搭建了debian10的本地镜像源 1 安装ntp apt install ntp 2 配置 sudo
  • STL priority_queue使用

    转自 xff1a http www cnblogs com lvpengms archive 2010 04 05 1704669 html 包含priority queue 的头文件是 lt queue gt priority queue