priority queue stl
Podrobný pohľad na prioritný rad v STL.
V tejto sérii Explicit C ++ sme v predchádzajúcom tutoriáli videli komíny a fronty.
V tomto výučbe sa budeme zaoberať ešte ďalším špecializovaným kontajnerom v STL, t. J. Prioritným frontom.
ako otvoriť súbor json v systéme Windows
Prioritným frontom je používateľ kontajnera v STL. Prioritným radom je kontajner, ktorý má prvky usporiadané v nezmenšujúcom sa poradí tak, že prvý prvok je vždy najväčším prvkom vo fronte.
=> Úplný zoznam výukových programov C ++ nájdete tu.
Čo sa dozviete:
pohodové webové služby, otázky a odpovede pre skúsených v jave
Prehľad
Na rozdiel od bežného poradia, ktoré tlačí a vysúva prvok podľa poradia FIFO, má prioritný rad prvky v nezmenšujúcom sa poradí a pre každý prvok má prioritu (pevné poradie).
Na prioritný front sa dá pozerať podobným spôsobom ako na dátovú štruktúru „max. Hromady“ v C ++.
Všeobecná syntax prioritného frontu je:
priority_queue queue_name;
Ak teda chceme definovať prioritný front typu int, môžeme ho definovať takto:
priority_queue mypqueue;
Prioritný front - operácie
Pozrime sa na operácie podporované prioritným frontom nižšie.
- Tam: Vloží prvok do frontu priorít. Pri vkladaní prvkov sa zachová priorita prvkov.
- Pop: Odstráni najvrchnejší prvok z prioritného frontu.
- Hore: Vráti najvyšší prvok v prioritnom rade, tj najväčší prvok v prioritnom rade.
- Prázdne: Skontroluje, či je prioritný front prázdny.
- Veľkosť: Vráti veľkosť prioritného frontu, t. J. Počet prvkov v prioritnom fronte.
Napíšme program, ktorý demonštruje použitie týchto funkcií / operácií.
#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; }
Výkon:
Prioritný rad po vložení hodnoty 60: 60 3 1
Prioritný rad po vložení hodnoty 5: 60 5 3 1
Poradový rad mypq je: 60 10 5 3 1
mypq.size (): 5
mypq.top (): 60
mypq.pop (): 10 5 3 1
Pozorne skontrolujte výstup, aby ste pochopili prioritný front. Najskôr stlačíme hodnoty 1,3,60, ako je znázornené v prvom riadku výstupu. Potom zatlačíme na hodnotu 5 vo fronte priorít. Potom sa zobrazí prioritný front. Všimnite si, že hoci je hodnota 5 tlačená za 60, horná časť prioritného frontu je stále 60.
aké sú najlepšie sťahovače hudby
Opäť stlačíme ďalšiu hodnotu 10 a stále je vrchol prioritného frontu 60. Je to tak preto, lebo pri posúvaní prvkov sa zachováva poradie alebo priorita prvkov tak, že najväčší prvok je vždy na vrchu.
Záver
Toto všetko bolo o implementácii prioritných frontov v STL. V našom ďalšom výučbe sa dozvieme viac o kontajneroch STL, ako je mapa a sada.
=> Kliknutím sem zobrazíte sériu školení Absolute C ++.