STL中的序列式容器——priority_queue(优先队列)
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(优先队列)相关推荐
- C++ STL : 模拟实现STL中的关联式容器unordered_map/unordered_set
目录 unordered_map/unordered_set unordered_map/unordered_set与map/set的区别 底层哈希桶的改造 仿函数 Key值的获取方法 hash(ke ...
- C++ STL : 模拟实现STL中的关联式容器map和set
目录 关联式容器 键值对 底层红黑树的改造 仿函数 红黑树的迭代器 完整代码 set set的文档介绍 set的实现 map map的文档介绍 map的实现 operator[] 完整代码 multi ...
- STL源码剖析 序列式容器|Vector
容器的概观和分类 array 数组 .list 链表.tree树 .stack堆栈.queue队列.hash table散列表.set集合.map映射表 根据数据在容器中的排列顺序,将上述数据结构分为 ...
- 【C++ STL学习笔记】C++ STL序列式容器(array,vector,deque,list)
文章目录 C++ STL容器是什么? 迭代器是什么,C++ STL迭代器(iterator)用法详解 迭代器类别 迭代器的定义方式 C++序列式容器(STL序列式容器)是什么 容器中常见的函数成员 C ...
- C++ STL容器——序列式容器(array、vector、deque、list)
概述 1.C++ STL的容器分为三种,序列式容器,关联式容器,无序式容器,这里先说说常用的序列式容器. 2.array,vector,deque,list,forward_list这几种都是序列式容 ...
- STL序列式容器Standard Template Library Sequence Container
STL序列式容器 STL Sequence Container 目录 STL序列式容器 STL Sequence Container STL(Standard Template Library)概述 ...
- 第四章 序列式容器(sequence containers)
序列式容器(sequence containers) 1.容器的概观与分类 2.vector 3.list 4.deque 5.stack 6.queue 7.heap(隐私表述,implicit r ...
- 容器大小_C++复习篇(7)序列式容器vector
点击蓝字 关注我们 主要内容 本篇内容主要介绍STL六大组件之一的序列式容器(vector),容器其实就是各种数据结构:另外,迭代器部分的内容可以看看<STL源码剖析>,它的的主要作用是作 ...
- C++基本序列式容器 vector (一)
我们以 vector.deque 和 list 为例介绍基本序列式容器,先来看一个关于 vector 容器的例子. #include <iostream> #include <vec ...
- STL之序列式容器(五)、list容器
一.list(STL list)使用.创建和初始化 list<T> 容器模板定义在 list 头文件中,是 T 类型对象的双向链表. list 容器具有一些 vector 和 deque ...
最新文章
- linux下cuda与cudnn安装
- ios 界面间跳转方法总结
- Python:条件判断
- 程序员面试、算法研究、编程艺术、红黑树、机器学习5大系列集锦
- Linux进阶之路————scp指令介绍与演示
- app_process执行java文件
- Java操作zip压缩和解压缩文件工具类
- Edit Control最简单使用
- 小波变换 分离影像低频部分_连续小波变换(1)
- python刘卫国实验题_刘卫国c 程序设计实践教程答案
- yml文件中${}的使用
- arcgis弧段怎么加很多点_关于ArcGIS的这62个常用技巧,你造吗?
- IT女新加坡求职记(三篇)
- 【机器学习】 随机森林(Random Forest)
- 8.利用红外遥控信号控制LED灯的亮灭
- Threejs实现下雨,下雪,阴天,晴天,火焰
- MyBatis(用于简化JDBC开发)
- 目前就常用计算机类型,CAD-CAM练习题
- Mysql查询时间数据
- 如何做到网站seo秒收录?[经验分享]
热门文章
- 美团猫眼电影Android模块化实战总结
- python回溯算法全排列_从全排列看回溯算法
- java 配置dbcp_java – 使用DBCP进行Tomcat配置
- c语言二叉树的序列化,不怕面试被问了!二叉树算法大盘点
- php cgi启动报错,php编译安装,cgi启动,以及memcache扩展编译安装.
- mysql 用户列表数据结构_MySQL数据结构-行结构
- python编程从入门到实践pdf_【送书PDF】Python编程从入门到实践
- jquery上传 php,jQuery AJAX文件上传PHP
- 凯撒密码的实践使用-1
- 常用标准库_Python入门(五):常用标准库sys和os