使用更大值和向量声明优先级队列

Declaration of Priority Queue using greater and vector

本文关键字:向量 声明 优先级 队列      更新时间:2023-10-16

有人能解释一下这个声明的含义吗:

typedef pair<long long, int> PII;
priority_queue<PII, vector<PII>, greater<PII> > Q;

它是作为一对long longint的优先级队列还是其他什么?请有人也解释一下这里的greater<PII>是什么?

这声明了一个包含std::pair<long long, int>实例的std::priority_queue,其中std::vector<std::pair<long long, int>>是优先级队列的底层容器(因为它是容器适配器)。

std::greater<std::pair<long long, int>>用作队列的Comparator函数对象,检查LHS对是否大于RHS对。参考如下:

http://en.cppreference.com/w/cpp/utility/functional/greater

这里使用greater意味着更低的值被认为具有更高的优先级,并且更早地从优先级队列中出来。默认情况下,使用less,值越高,优先级越高。

对按字典顺序排列;(1,3)在(2,1)之前,在(1,2)之后。

这是在c++中创建最小堆的方法。

typedef pair<long long, int> PII;
priority_queue<PII, vector<PII>, greater<PII> > Q;