2016-05-14 29 views
-1

可有人请解释什么是这个声明的含义是:优先级队列的声明中使用更大,载体

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

是它被视为对long longint或其他东西的优先级队列?可以请别人解释什么是greater<PII>这里?

+0

可能重复的[优先队列实现说明](http://stackoverflow.com/questions/20944305/priority-queue-implementation-explanation) – malioboro

回答

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

使用greater在这里意味着较低的值被认为是高优先级的和前来的优先级队列前面了。默认情况下,使用less,较高的值是较高的优先级。

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

+0

感谢您的信息.. –

+1

@Alan Stokes到底我在找什么:) – Euler