-2
當我們想要一個最小優先級隊列時,我們聲明Compare
類別爲std:greater
。這是類似return obj1 > obj2
比較優先級隊列的類別
任何人都可以詳細說明如何優先級隊列使用它?將它應用於插入?或在pop()
之後將其用於「heapify」。
我們知道在插入時,新元素會盡可能地浮起來。所以如果插入使用更大,那麼obj1
將是父母?和obj2
會是新的元素本身?
當我們想要一個最小優先級隊列時,我們聲明Compare
類別爲std:greater
。這是類似return obj1 > obj2
比較優先級隊列的類別
任何人都可以詳細說明如何優先級隊列使用它?將它應用於插入?或在pop()
之後將其用於「heapify」。
我們知道在插入時,新元素會盡可能地浮起來。所以如果插入使用更大,那麼obj1
將是父母?和obj2
會是新的元素本身?
我查閱了STL源代碼,並瞭解瞭如何使用Compare函數。下面是鏈接 http://llvm.org/svn/llvm-project/libcxx/trunk/include/algorithm
關鍵字:push_heap,sift_up
if (Compare(parent, children))
do the swap
這個答案應該是一個評論。 –
你所有的問題,答案是肯定的。 –
我不知道標準是否規定了排序機制(我懷疑是不是,雖然它可能暗示它),但它確實指定了一些複雜性。 ['std :: priority_queue :: push'](http://en.cppreference.com/w/cpp/container/priority_queue/push), ['std :: priority_queue :: emplace'](http:// en.cppreference.com/w/cpp/container/priority_queue/emplace)和['std :: priority_queue :: pop'](http://en.cppreference.com/w/cpp/container/priority_queue/pop)是所有這些都保證在最壞的情況下進行對數數量的比較,再加上底層容器上匹配操作的複雜性。 –