STL中的序列式容器——priority_queue(优先队列)

  priority_queue,即“优先队列”。普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先删除。优先队列具有最高级先出 (first in, largest out)的行为特征。通常采用堆数据结构来实现。
  priority_queue是C++ STL的一个重要成员,使用它时需要包含头文件:

#include <queue>;

  priority_queue是容器适配器的一种,容器适配器中的数据是以不同优先级的方式组织的。

一、priority_queue 的初始化

有以下方式,举例说明如下:

queue<int> a;
queue<int> b(a); //拷贝队列a给队列b

二、priority_queue 对象的重要操作

列举如下:

a.push(5); //将5压入队列的末端
a.pop(); //弹出队列的第一个元素(队顶元素),注意此函数并不返回任何值
a.top(); //返回优先队列中有最高优先级的元素
a.empty(); //判断a是否为空,空则返回ture,不空则返回false
a.size(); //返回队列的长度
a=b; //队列b赋值给队列a

三、优先级的设定

可以有以下几种方式,列举如下:

struct cmp1
{bool operator ()(const int &a,const int &b){return a>b;//最小值优先}
};
struct cmp2
{bool operator ()(const int &a,const int &b){return a<b;//最大值优先}
};
struct node1
{int u;bool operator < (const node1 &a) const{return u>a.u;//最小值优先}
};
struct node2
{int u;bool operator < (const node2 &a) const{return u<a.u;//最大值优先}
};
priority_queue<int>q1;//采用默认优先级构造队列,最大值优先
priority_queue<int,vector<int>,cmp1>q2;//最小值优先
priority_queue<int,vector<int>,cmp2>q3;//最大值优先
priority_queue<int,vector<int>,greater<int> >q4;//最小值优先
//注意“>>”会被认为错误,因为这是右移运算符,所以这里用空格号隔开
priority_queue<int,vector<int>,less<int> >q5;//最大值优先
priority_queue<node1>q6;//最小值优先
priority_queue<node2>q7;//最大值优先

STL中的序列式容器——priority_queue(优先队列)相关推荐

  1. C++ STL : 模拟实现STL中的关联式容器unordered_map/unordered_set

    目录 unordered_map/unordered_set unordered_map/unordered_set与map/set的区别 底层哈希桶的改造 仿函数 Key值的获取方法 hash(ke ...

  2. C++ STL : 模拟实现STL中的关联式容器map和set

    目录 关联式容器 键值对 底层红黑树的改造 仿函数 红黑树的迭代器 完整代码 set set的文档介绍 set的实现 map map的文档介绍 map的实现 operator[] 完整代码 multi ...

  3. STL源码剖析 序列式容器|Vector

    容器的概观和分类 array 数组 .list 链表.tree树 .stack堆栈.queue队列.hash table散列表.set集合.map映射表 根据数据在容器中的排列顺序,将上述数据结构分为 ...

  4. 【C++ STL学习笔记】C++ STL序列式容器(array,vector,deque,list)

    文章目录 C++ STL容器是什么? 迭代器是什么,C++ STL迭代器(iterator)用法详解 迭代器类别 迭代器的定义方式 C++序列式容器(STL序列式容器)是什么 容器中常见的函数成员 C ...

  5. C++ STL容器——序列式容器(array、vector、deque、list)

    概述 1.C++ STL的容器分为三种,序列式容器,关联式容器,无序式容器,这里先说说常用的序列式容器. 2.array,vector,deque,list,forward_list这几种都是序列式容 ...

  6. STL序列式容器Standard Template Library Sequence Container

    STL序列式容器 STL Sequence Container 目录 STL序列式容器 STL Sequence Container STL(Standard Template Library)概述 ...

  7. 第四章 序列式容器(sequence containers)

    序列式容器(sequence containers) 1.容器的概观与分类 2.vector 3.list 4.deque 5.stack 6.queue 7.heap(隐私表述,implicit r ...

  8. 容器大小_C++复习篇(7)序列式容器vector

    点击蓝字 关注我们 主要内容 本篇内容主要介绍STL六大组件之一的序列式容器(vector),容器其实就是各种数据结构:另外,迭代器部分的内容可以看看<STL源码剖析>,它的的主要作用是作 ...

  9. C++基本序列式容器 vector (一)

    我们以 vector.deque 和 list 为例介绍基本序列式容器,先来看一个关于 vector 容器的例子. #include <iostream> #include <vec ...

  10. STL之序列式容器(五)、list容器

    一.list(STL list)使用.创建和初始化 list<T> 容器模板定义在 list 头文件中,是 T 类型对象的双向链表. list 容器具有一些 vector 和 deque ...

最新文章

  1. linux下cuda与cudnn安装
  2. ios 界面间跳转方法总结
  3. Python:条件判断
  4. 程序员面试、算法研究、编程艺术、红黑树、机器学习5大系列集锦
  5. Linux进阶之路————scp指令介绍与演示
  6. app_process执行java文件
  7. Java操作zip压缩和解压缩文件工具类
  8. Edit Control最简单使用
  9. 小波变换 分离影像低频部分_连续小波变换(1)
  10. python刘卫国实验题_刘卫国c 程序设计实践教程答案
  11. yml文件中${}的使用
  12. arcgis弧段怎么加很多点_关于ArcGIS的这62个常用技巧,你造吗?
  13. IT女新加坡求职记(三篇)
  14. 【机器学习】 随机森林(Random Forest)
  15. 8.利用红外遥控信号控制LED灯的亮灭
  16. Threejs实现下雨,下雪,阴天,晴天,火焰
  17. MyBatis(用于简化JDBC开发)
  18. 目前就常用计算机类型,CAD-CAM练习题
  19. Mysql查询时间数据
  20. 如何做到网站seo秒收录?[经验分享]

热门文章

  1. 美团猫眼电影Android模块化实战总结
  2. python回溯算法全排列_从全排列看回溯算法
  3. java 配置dbcp_java – 使用DBCP进行Tomcat配置
  4. c语言二叉树的序列化,不怕面试被问了!二叉树算法大盘点
  5. php cgi启动报错,php编译安装,cgi启动,以及memcache扩展编译安装.
  6. mysql 用户列表数据结构_MySQL数据结构-行结构
  7. python编程从入门到实践pdf_【送书PDF】Python编程从入门到实践
  8. jquery上传 php,jQuery AJAX文件上传PHP
  9. 凯撒密码的实践使用-1
  10. 常用标准库_Python入门(五):常用标准库sys和os