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

时间:2016-05-14 13:03:55

标签: c++ stl priority-queue

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

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

是否将其视为long longint或其他对的优先级队列?也可以请某人在这里解释greater<PII>是什么?

3 个答案:

答案 0 :(得分:3)

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

std::greater<std::pair<long long, int>>用作队列的比较器函数对象,检查LHS对是否大于RHS对。请参阅下面的参考:

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

答案 1 :(得分:1)

此处使用greater意味着较低的值被认为具有较高的优先级,并且较早出现在优先级队列中。默认使用less,更高的值是更高的优先级。

对按字典顺序排列; (1,3)来自(2,1)和之后(1,2)。

答案 2 :(得分:0)

这是在c ++中创建min heap的方法。

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