priority queue stl
En djupgående titt på prioritetskö i STL.
I denna Explicit C ++ - serie har vi sett stackar och köer i föregående handledning.
I denna handledning kommer vi att diskutera ännu en specialiserad container i STL, dvs. prioritetskö.
vad är min nätverkssäkerhetsnyckel för verizon hotspot
En prioritetskö är en containeradopterare i STL. En prioritetskö är en behållare med elementen ordnade i icke-minskande ordning så att det första elementet alltid är det största elementet i kön.
=> Besök här för en komplett lista över C ++ -studier.
unix shell-skriptkommandon med exempel
Vad du kommer att lära dig:
Översikt
I motsats till den normala kön som skjuter och poppar elementet enligt FIFO-ordning, har prioritetskön element i icke-minskande ordning och har en prioritet (fast ordning) för varje element
Prioritetskön kan ses på ett liknande sätt som en ”max heap” -datastruktur i C ++.
Den allmänna syntaxen för prioritetskön är:
priority_queue queue_name;
Så om vi vill definiera en prioritetskö av typen int kan vi definiera den enligt följande:
priority_queue mypqueue;
Priority Queue - Operations
Låt oss se operationerna som stöds av prioritetskön nedan.
- Skjuta på: Infogar ett element i prioritetskön. När element sätts in bibehålls elementens prioritet.
- Pop: Tar bort det översta elementet från prioritetskön.
- Topp: Returnerar det översta elementet i prioritetskön, dvs. det största elementet i prioritetskön.
- Tömma: Kontrollerar om prioritetskön är tom.
- Storlek: Returnerar storleken på prioritetskön, dvs. antalet element i prioritetskön.
Låt oss skriva ett program för att demonstrera användningen av dessa funktioner / operationer.
#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; }
Produktion:
hur man gör ett ddos-program
Prioritetskö efter infogning av värde 60: 60 3 1
Prioritetskö efter infogning av värde 5: 60 5 3 1
Prioriteringskön mypq är: 60 10 5 3 1
mypq.size (): 5
mypq.top (): 60
mypq.pop (): 10 5 3 1
Kontrollera utdata noggrant för att förstå prioritetskön. Först trycker vi på värden 1,3,60 som visas i den första raden i utgången. Sedan trycker vi på värdet 5 i prioritetskön. Därefter visas prioritetskön. Observera att även om värdet 5 trycks in efter 60, är toppen av prioritetskön fortfarande 60.
Återigen trycker vi på ett annat värde 10 och ändå är toppen av prioritetskön 60. Detta beror på att elementens ordning eller prioritet upprätthålls så att det största elementet alltid är högst upp.
Slutsats
Det här handlade om implementering av prioritetskö i STL. I vår nästa handledning lär vi oss mer om STL-behållare som karta och uppsättning.
=> Klicka här för den absoluta C ++ träningsserien.