请有人解释一下这个声明的含义:
typedef pair<long long, int> PII;
priority_queue<PII, vector<PII>, greater<PII> > Q;
是否将其视为long long
和int
或其他对的优先级队列?也可以请某人在这里解释greater<PII>
是什么?
答案 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对。请参阅下面的参考:
答案 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;