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

Come unire queste code di priorità A e B in base allo stesso comparatore. Ho provato a trovare la funzione integrata ma non ho trovato nulla.unione di due code di priorità

+5

@BoBTFish: 'std :: priority_queue' non espone nessun iteratore. – Gorpik

+1

Spingere tutti gli elementi da una coda all'altra? – juanchopanza

+0

@BoBTFish L'ho già pensato ma il problema è che il suo iteratore non è accessibile. Non riesco a fare A.begin() o A.end(). Quell'interfaccia non è disponibile. –

risposta

5

Il modo più semplice è quello di spostare semplicemente gli oggetti da una coda all'altra:

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

Ci potrebbe esistere un metodo più efficiente, però.

+0

Questa sembra la mia ultima risorsa. –