2013-07-19 7 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; 

मैं इन प्राथमिकता पंक्तियों ए और बी को उसी तुलनित्र के आधार पर कैसे विलय कर सकता हूं। मैंने बिल्टिन फ़ंक्शन ढूंढने की कोशिश की लेकिन कोई भी नहीं मिला।दो प्राथमिकता कतारों को मर्ज करें

+5

@BoBTFish: 'std :: primary_queue' कोई इटरेटर नहीं दिखाता है। – Gorpik

+1

सभी तत्वों को एक कतार से दूसरे में पुश करें? – juanchopanza

+0

@BoBTFish मैंने पहले ही इसके बारे में सोचा है लेकिन समस्या यह है कि इसका इटेटरेटर सुलभ नहीं है। मैं एबेजिन() या एन्ड() नहीं कर सकता। वह इंटरफ़ेस उपलब्ध नहीं है। –

उत्तर

5

सबसे आसान तरीका है बस एक से दूसरे कतार से वस्तुओं को स्थानांतरित करने के लिए है:

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

वहाँ एक और अधिक कुशल विधि मौजूद हो सकता है, हालांकि।

+0

यह मेरा अंतिम उपाय जैसा दिखता है। –

संबंधित मुद्दे