2013-07-19 199 views
6
std::priority_queue<some_type, std::vector<some_type>, some_comparator> A; 
std::priority_queue<some_type, std::vector<some_type>, some_comparator> B; 

如何合併基於相同比較器的優先級隊列A和B.我試圖找到內建函數,但找不到任何內容。合併兩個優先級隊列

+5

@BoBTFish:'std :: priority_queue'沒有公開迭代器。 – Gorpik

+1

將所有元素從一個隊列推送到另一個隊列中? – juanchopanza

+0

@BoBTFish我已經想到了它,但問題是它的迭代器不可訪問。我不能做A.begin()或A.end()。該界面不可用。 –

回答

5

最簡單的方法是簡單地從一個隊列移動物件:

while(!B.empty()) { 
    A.push(B.top()); 
    B.pop(); 
} 

可能存在更有效的方法,雖然。

+0

這看起來像我最後的手段。 –