priority queue stl
Podrobný pohled na prioritní frontu v STL.
V této sérii Explicit C ++ jsme v předchozím kurzu viděli hromádky a fronty.
V tomto kurzu probereme ještě další specializovaný kontejner v STL, tj. Prioritní frontu.
Převaděč z YouTube na MP4 online zdarma bez stahování
Prioritní fronta je přijímač kontejnerů v STL. Prioritní fronta je kontejner, který má prvky uspořádané v neklesajícím pořadí tak, že první prvek je vždy největším prvkem ve frontě.
=> Úplný seznam výukových programů C ++ naleznete zde.
Co se naučíte:
Přehled
Na rozdíl od normální fronty, která tlačí a vysune prvek podle pořadí FIFO, má prioritní fronta prvky v neklesajícím pořadí a má prioritu (pevné pořadí) pro každý prvek
Prioritní frontu lze zobrazit podobným způsobem jako datovou strukturu „max. Hromady“ v C ++.
nedefinovaný odkaz na třídu c ++
Obecná syntaxe prioritní fronty je:
priority_queue queue_name;
Pokud tedy chceme definovat prioritní frontu typu int, můžeme ji definovat takto:
priority_queue mypqueue;
Prioritní fronta - operace
Podívejme se na operace podporované prioritní frontou níže.
- Tam: Vloží prvek do fronty priorit. Při vkládání prvků je zachována priorita prvků.
- Pop: Odebere nejvyšší prvek z prioritní fronty.
- Horní: Vrátí nejvyšší prvek ve frontě priorit, tj. Největší prvek ve frontě priorit.
- Prázdný: Zkontroluje, zda je prioritní fronta prázdná.
- Velikost: Vrátí velikost prioritní fronty, tj. Počet prvků v prioritní frontě.
Napíšeme program, který demonstruje použití těchto funkcí / operací.
#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ýstup:
Prioritní fronta po vložení hodnoty 60: 60 3 1
Prioritní fronta po vložení hodnoty 5: 60 5 3 1
Prioritní fronta mypq je: 60 10 5 3 1
jak přehráváte soubory SWF
mypq.size (): 5
mypq.top (): 60
mypq.pop (): 10 5 3 1
Pečlivě zkontrolujte výstup, abyste porozuměli prioritní frontě. Nejprve stiskneme hodnoty 1,3,60, jak je znázorněno v prvním řádku výstupu. Poté posuneme hodnotu 5 do fronty priorit. Poté se zobrazí prioritní fronta. Všimněte si, že ačkoli je hodnota 5 posunuta po 60, horní část prioritní fronty je stále 60.
Znovu tlačíme další hodnotu 10 a stále je vrchol prioritní fronty 60. Je to proto, že zatímco tlačíte prvky, pořadí nebo priorita prvků je udržována tak, že největší prvek je vždy nahoře.
Závěr
Jednalo se o implementaci prioritní fronty v STL. V našem dalším tutoriálu se naučíme více o kontejnerech STL, jako je mapa a sada.
=> Klikněte sem a získejte Absolute C ++ Training Series.