priority queue stl
Et dybtgående kig på prioritetskø i STL.
I denne Explicit C ++ - serie har vi set stakke og køer i den foregående tutorial.
I denne vejledning vil vi diskutere endnu en specialiseret container i STL, dvs. prioritetskø.
qa testled interview spørgsmål og svar
En prioritetskø er en containeradopter i STL. En prioritetskø er en container, der har elementerne arrangeret i ikke-faldende rækkefølge, således at det første element altid er det største element i køen.
=> Besøg her for den komplette C ++ tutorials liste.
Hvad du lærer:
Oversigt
I modsætning til den normale kø, der skubber og popper elementet i henhold til FIFO-rækkefølge, har prioritetskø elementer i ikke-faldende rækkefølge og har en prioritet (fast rækkefølge) for hvert element
Prioritetskø kan ses på en lignende måde som en 'max heap' -datastruktur i C ++.
Den generelle syntaks for prioritetskøen er:
priority_queue queue_name;
Så hvis vi vil definere en prioritetskø af typen int, kan vi definere den som følger:
priority_queue mypqueue;
Prioritetskø - operationer
Lad os se de operationer, der understøttes af nedenstående prioritetskø.
sql database interview spørgsmål og svar
- Skubbe: Indsætter et element i prioritetskøen. Mens elementerne indsættes, opretholdes elementernes prioritet.
- Pop: Fjerner det øverste element fra prioritetskøen.
- Top: Returnerer det øverste element i prioritetskøen, dvs. det største element i prioritetskøen.
- Tom: Kontrollerer, om prioritetskøen er tom.
- Størrelse: Returnerer størrelsen på prioritetskøen, dvs. antallet af elementer i prioritetskøen.
Lad os skrive et program for at demonstrere brugen af disse 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:
Prioritetskø efter indsættelse af værdi 60: 60 3 1
Prioritetskø efter indsættelse af værdi 5: 60 5 3 1
Prioritetskø mypq er: 60 10 5 3 1
mypq.size (): 5
mypq.top (): 60
mypq.pop (): 10 5 3 1
Kontroller output nøje for at forstå prioritetskøen. Først skubber vi værdier 1,3,60 som vist i første linje i output. Derefter skubber vi værdien 5 i prioritetskøen. Derefter vises prioritetskøen. Bemærk, at selvom værdien 5 skubbes efter 60, er toppen af prioritetskøen stadig 60.
help desk tekniker interview spørgsmål og svar
Igen skubber vi en anden værdi 10 og stadig er toppen af prioritetskøen 60. Dette skyldes, at mens elementet skubbes, opretholdes rækkefølgen eller prioriteten af elementerne således, at det største element altid er øverst.
Konklusion
Dette handlede kun om implementering af prioritetskø i STL. I vores næste tutorial lærer vi mere om STL-containere som kort og sæt.
=> Klik her for den absolutte C ++ træningsserie.