2016-05-14 74 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