博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Priority_queue详解
阅读量:4961 次
发布时间:2019-06-12

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

Priority_queue详解

  

  

 

基本函数: 

  .push(x)

  .pop()

  .top()

  .size()

  .empty()

 

定义:

  

  priority_queue<Type, Container, Functional>

  Type 就是数据类型,Container 就是容器类型(Container必须是用数组实现的容器,比如vector,deque等等,但不能用 list。STL里面默认用的是vector),Functional 就是比较的方式,当需要用自定义的数据类型时才需要传入这三个参数,使用基本数据类型时,只需要传入数据类型,默认是大顶堆
一般是:

 

  对于基础类型 默认是大顶堆

  priority_queue <int,vector<int>,greater<int> > q;   升序

  priority_queue <int,vector<int>,less<int> > q;    降序

  //greater和less是std实现的两个仿函数

 

 

  头文件 include<queue> include<iterator>

  队列 priority_queue<类型> 名称

  越大越优先

 

  优先级自定义(运算符重载):

  Struct Node{      int  w,v    }    bool operator <(const Node &a,const Node &b){      return a.v>b.v   (按照V从小到大输出)    }

 

 

 自定义优先队列

#include
#include
#include
#include
#define FORa(i,s,e) for(int i=s;i<=e;i++)#define FORs(i,s,e) for(int i=s;i>=e;i--)#define gc pa==pb&&(pb=(pa=buf)+fread(buf,1,10000,stdin),pa=pb)?EOF:*pa++#define File(name) freopen(name".in","r",stdin),freopen(name".out","w",stdout);using namespace std;static char buf[10000],*pa=buf,*pb=buf;inline int read();struct Node{ int x,y; bool operator >(const Node &a) const { return x>a.x; //比较大小 } void print() const { cout<
<<" "<
<
,greater
> pq_a; //比较的要与结构体定义函数行的符号一致 FORa(i,1,10) { scanf("%d%d",&a[0].x,&a[0].y); pq_a.push(Node(a[0])); } while(!pq_a.empty()) { a[0]=pq_a.top(); a[0].print(); pq_a.pop(); } return 0;}inline int read(){ register int x(0);register int f(1);register char c(gc); while(c<'0'||c>'9') f=c=='-'?-1:1; while(c>='0'&&c<='9') x=(x<<1)+(x<<3)+(c^48),c=gc; return x;}

 

 

 

转载于:https://www.cnblogs.com/SeanOcean/p/10366816.html

你可能感兴趣的文章
反转古诗
查看>>
异常处理
查看>>
Java学习总结:飘逸的字符串
查看>>
select 1 form 理解
查看>>
kexec相关阅读
查看>>
(转载)vi替换命令
查看>>
CentOS 6 下无法wget https链接的解决方法
查看>>
JS 取得一个区间的随机整数
查看>>
Sink Prosessor - Flume的可靠性保证:故障转移、负载均衡
查看>>
BZOJ.5407.girls(容斥 三元环)
查看>>
Codeforces.1129E.Legendary Tree(交互 二分)
查看>>
Chap1:全景图[Computer Science Illuminated]
查看>>
php token验证范例
查看>>
任天堂的游戏之路
查看>>
帝国cms <!--list.var1-->产生不同样式
查看>>
类的多线程下实现单例类
查看>>
2.MySQL授权命令grant的使用方法
查看>>
SQL优化(待完善)
查看>>
Arduino可穿戴开发入门教程LilyPad和LilyPad Simple的介绍
查看>>
关于ABAP EDITOR字体的设置
查看>>