优先队列学习

Posted csyxdh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了优先队列学习相关的知识,希望对你有一定的参考价值。

<!-- more -->

参考的优质博客:

? https://blog.csdn.net/c20182030/article/details/70757660

优先队列的定义是 :

1.存在的库函数:

? #include<queue>

2.一般的定义

? priosity_queue<type, cotainers<> , cmp> q; /第一个参数为参数类型, 第二参数为容器,第三个参数为比较函数. 一般可以用 greater<类型> 表示从小到大排序.

对于 优先队列与 普通排序不同:

重载优先队列时 优先队列默认排序是 大顶堆 从大到小排序

因此要使得 优先队列 默认从小到大排序 需要 定义为:

struct cmp{

? bool operator(const Node &a,const Node &b) const{

? return a.xx > b.xx; //按照小顶堆排序

? }

}

eg:

3. 常见 重载cmp代码格式

如果直接定义 为 priosity_queue<Node> q 这样默认的格式为 :这样默认安装大顶堆的排序方式


struct Node{
int d, u;
// bool operator <( const Node &x )const //这是重载小于符号
//   {
//       return d > x.d;
//   }
};
struct cmp{  //和普通的重载排序算法不同, 因为优先队列默认是
bool operator () (const Node &a,const Node &b) const{
return a.d > b.d;
}
};

 

4.优先队列用到的场景:

? 1.堆优化算法: dijkstra算法, prime算法.

 




以上是关于优先队列学习的主要内容,如果未能解决你的问题,请参考以下文章

RabbitMQ学习笔记五:RabbitMQ之优先级消息队列

RabbitMQ 消息队列学习

学习:STL----优先队列

优先队列学习

STL学习笔记优先队列priority_queue

Python 线程优先队列 PriorityQueue