2013-07-19 8 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を同じコンパレータに基づいてマージする方法を教えてください。私は組み込み関数を見つけようとしましたが、何も見つけられませんでした。2つのプライオリティキューをマージする

+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

これは私の最後の手段のようです。 –

関連する問題