博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
优先队列 STL (转)
阅读量:6466 次
发布时间:2019-06-23

本文共 1753 字,大约阅读时间需要 5 分钟。

  优先队列是队列的一种,不过它可以按照自定义的一种方式(数据的优先级)来对队列中的数据进行动态的排序每次的push和pop操作,队列都会动态的调整,以达到我们预期的方式来存储。

 例如:我们常用的操作就是对数据排序,优先队列默认的是数据大的优先级高所以我们无论按照什么顺序push一堆数,最终在队列里总是top出最大的元素。

用法:

示例:将元素5,3,2,4,6依次push到优先队列中,print其输出。

1. 标准库默认使用元素类型的<操作符来确定它们之间的优先级关系。

priority_queue
pq;

通过<操作符可知在整数中元素大的优先级高。故示例1中输出结果为: 6 5 4 3 2

 

2. 数据越小,优先级越高

priority_queue
, greater
>pq;

其中

第二个参数为容器类型。
第二个参数为比较函数。
故示例2中输出结果为:2 3 4 5 6

 

3.自定义优先级,重载比较符号 重载默认的 < 符号

1 struct node2 {3     friend bool operator< (node n1, node n2)4     {5         return n1.priority < n2.priority;6     }7     int priority;8     int value;9 };

 

这时,需要为每个元素自定义一个优先级。

注:重载>号会编译出错,因为标准库默认使用元素类型的<操作符来确定它们之间的优先级关系。

而且自定义类型的<操作符与>操作符并无直接联系

1 #include
2 #include
3 #include
4 using namespace std; 5 struct node 6 { 7 friend bool operator< (node n1, node n2) 8 { 9 return n1.priority < n2.priority;10 }11 int priority;12 int value;13 };14 int main()15 {16 const int len = 5;17 int i;18 int a[len] = {
3,5,9,6,2};19 //示例120 priority_queue
qi;21 for(i = 0; i < len; i++)22 qi.push(a[i]);23 for(i = 0; i < len; i++)24 {25 cout<
<<" ";26 qi.pop();27 }28 cout<
, greater
>qi2;31 for(i = 0; i < len; i++)32 qi2.push(a[i]);33 for(i = 0; i < len; i++)34 {35 cout<
<<" ";36 qi2.pop();37 }38 cout<
qn;41 node b[len];42 b[0].priority = 6; b[0].value = 1; 43 b[1].priority = 9; b[1].value = 5; 44 b[2].priority = 2; b[2].value = 3; 45 b[3].priority = 8; b[3].value = 2; 46 b[4].priority = 1; b[4].value = 4; 47 48 for(i = 0; i < len; i++)49 qn.push(b[i]);50 cout<<"优先级"<<'\t'<<"值"<

 

转载于:https://www.cnblogs.com/CXCXCXC/p/4869339.html

你可能感兴趣的文章
交换机二层接口access、trunk、hybird三种模式对VLAN的处理过程
查看>>
jQuery.extend 函数详解
查看>>
[转]Windows的批处理脚本
查看>>
lnmp高人笔记
查看>>
[转载] OpenCV2.4.3 CheatSheet学习(三)
查看>>
子程序框架
查看>>
多维数组元素的地址
查看>>
数据库运维体系_SZMSD
查看>>
福大软工1816 · 第三次作业 - 结对项目1
查看>>
selenium多个窗口切换
查看>>
《单页面应用》所获知识点
查看>>
静态库 调试版本 和发布版本
查看>>
JAVA中的finalize()方法
查看>>
慕课网学习手记--炫丽的倒计时效果Canvas绘图与动画基础
查看>>
==与equals()的区别
查看>>
基本分类方法——KNN(K近邻)算法
查看>>
在XenCenter6.2中构建CentOS7虚拟机的启动错误
查看>>
.NET Framework3.0/3.5/4.0/4.5新增功能摘要
查看>>
php中表单提交复选框与下拉列表项
查看>>
熟悉常用的Linux操作
查看>>