优先队列C++与STL入门-刘汝佳

来源:互联网 发布:淘宝上怎么买av的资源 编辑:程序博客网 时间:2024/06/05 04:58

为了加深下印象,想一遍,方便下次查。 

优先队列是一种抽象数据类型,先出队的不同于显出队列,而是队列中优先级最高的元素现出。(类似于“急诊病人插队”)

STL的优先队列在<queue>头文件中,用“priority_queue<int > pq”来声明,这个pq是一个“越小的整数优先级越低的优先队列”。

注意:由于出队的元素并不是最先进队的元素,出队的方式由queue的front()改为了top() 即优先级最高的先走

自定义类型也可以组成优先队列,必须给每个元素定义一个优先级,这个优先级并不一定是个数字,能比较大小即可。类似于SORT只要元素定义了“小于”运算符,就可以使用优先队列。 

也可以按照需求自定义比较优先级,比如: 整数也越大优先级越小“

定义一个结构体cmp,重载”*()“运算符,使其”看上去像个函数“,然后用priority_queue<int ,vector<int >, cmp >pq的方式定义。

struct cmp{    bool operator() (const int a,const int b) const    {        return a>b;    }};
 下面为越小的整数优先级越大的优先队列

priority_queue <int ,vector<int > ,greater <int > >pq最后两个>不要写在一起
例题:

 UVA 136 Ugly Number

0 0
原创粉丝点击