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

Jak scalić te kolejki priorytetowe A i B na podstawie tego samego komparatora. Próbowałem znaleźć wbudowaną funkcję, ale nie mogłem jej znaleźć.Scalenie dwóch kolejek priorytetowych

+5

@BoBTFish: 'std :: priority_queue' nie udostępnia żadnych iteratorów. – Gorpik

+1

Prześlij wszystkie elementy z jednej kolejki do drugiej? – juanchopanza

+0

@BoBTFish Już o tym pomyślałem, ale problem polega na tym, że jego iterator nie jest dostępny. Nie mogę zrobić A.begin() ani A.end(). Ten interfejs nie jest dostępny. –

Odpowiedz

5

Najprostszym sposobem jest po prostu przenieść obiekty z jednej kolejki do drugiej:

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

Nie może istnieć bardziej wydajny sposób, choć.

+0

To wygląda na moją ostatnią deskę ratunku. –

Powiązane problemy