priority queue stl
Ein detaillierter Blick auf die Prioritätswarteschlange in STL.
In dieser expliziten C ++ - Serie haben wir im vorherigen Lernprogramm Stapel und Warteschlangen gesehen.
In diesem Tutorial werden wir noch einen weiteren spezialisierten Container in STL diskutieren, d. H. Die Prioritätswarteschlange.
Point-of-Sales-Systeme für iPad
Eine Prioritätswarteschlange ist ein Container-Adopter in STL. Eine Prioritätswarteschlange ist ein Container, dessen Elemente in nicht absteigender Reihenfolge angeordnet sind, so dass das erste Element immer das größte Element in der Warteschlange ist.
=> Besuchen Sie hier für die vollständige Liste der C ++ - Tutorials.
Konvertieren Sie YouTube länger als 20 Minuten in MP3
Was du lernen wirst:
Überblick
Im Gegensatz zu der normalen Warteschlange, die das Element gemäß der FIFO-Reihenfolge pusht und öffnet, enthält die Prioritätswarteschlange Elemente in nicht abnehmender Reihenfolge und für jedes Element eine Priorität (feste Reihenfolge)
Die Prioritätswarteschlange kann auf ähnliche Weise wie eine 'Max Heap' -Datenstruktur in C ++ angezeigt werden.
Die allgemeine Syntax der Prioritätswarteschlange lautet:
priority_queue queue_name;
Wenn wir also eine Prioritätswarteschlange vom Typ int definieren möchten, können wir sie wie folgt definieren:
priority_queue mypqueue;
Priority Queue - Operationen
Lassen Sie uns die Operationen sehen, die von der Prioritätswarteschlange unten unterstützt werden.
- Drücken: Fügt ein Element in die Prioritätswarteschlange ein. Beim Einfügen von Elementen bleibt die Priorität der Elemente erhalten.
- Pop: Entfernt das oberste Element aus der Prioritätswarteschlange.
- Oben: Gibt das oberste Element in der Prioritätswarteschlange zurück, d. H. Das größte Element in der Prioritätswarteschlange.
- Leer: Überprüft, ob die Prioritätswarteschlange leer ist.
- Größe: Gibt die Größe der Prioritätswarteschlange zurück, d. H. Die Anzahl der Elemente in der Prioritätswarteschlange.
Lassen Sie uns ein Programm schreiben, um die Verwendung dieser Funktionen / Operationen zu demonstrieren.
#include #include using namespace std; void displaypq(priority_queue pri_queue) { priority_queue pq = pri_queue; while (!pq.empty()) { cout << ' ' << pq.top(); pq.pop(); } cout << '
'; } int main () { priority_queue mypq; mypq.push(1); mypq.push(3); mypq.push(60); cout<<'
Priority queue after inserting value 60: '; displaypq(mypq); mypq.push(5); cout<<'
Priority queue after inserting value 5: '; displaypq(mypq); mypq.push(10); cout << '
The priority queue mypq is : '; displaypq(mypq); cout << '
mypq.size() : ' << mypq.size(); cout << '
mypq.top() : ' << mypq.top(); cout << '
mypq.pop() : '; mypq.pop(); displaypq(mypq); return 0; }
Ausgabe:
Was sind die Phasen von SDLC
Prioritätswarteschlange nach dem Einfügen des Werts 60: 60 3 1
Prioritätswarteschlange nach dem Einfügen des Werts 5: 60 5 3 1
Die Prioritätswarteschlange mypq lautet: 60 10 5 3 1
mypq.size (): 5
mypq.top (): 60
mypq.pop (): 10 5 3 1
Bitte überprüfen Sie die Ausgabe sorgfältig, um die Prioritätswarteschlange zu verstehen. Zuerst drücken wir die Werte 1,3,60, wie in der ersten Zeile der Ausgabe gezeigt. Dann schieben wir den Wert 5 in die Prioritätswarteschlange. Danach wird die Prioritätswarteschlange angezeigt. Beachten Sie, dass der Wert 5 nach 60 verschoben wird, der Anfang der Prioritätswarteschlange jedoch immer noch 60 ist.
Wieder drücken wir einen anderen Wert 10 und dennoch ist der Anfang der Prioritätswarteschlange 60. Dies liegt daran, dass beim Verschieben von Elementen die Reihenfolge oder Priorität der Elemente so beibehalten wird, dass das größte Element immer oben ist.
Fazit
Hier ging es um die Implementierung der Prioritätswarteschlange in STL. In unserem nächsten Tutorial erfahren Sie mehr über STL-Container wie Map und Set.
=> Klicken Sie hier für die Absolute C ++ - Schulungsserie.