stacks queues stl
Naučte se implementaci zásobníků a front v STL s příklady.
Stohy a fronty jsou dva kontejnery v STL, které mají velmi základní povahu. Jedná se o nejjednodušší kontejnery, které mají široké využití v programování softwaru.
V tomto kurzu uvidíme podrobnou implementaci obou těchto kontejnerů v STL. Projdeme také různé operace podporované zásobníkem a frontou s příklady.
=> Dávejte pozor na jednoduchou sérii školení C ++ zde.
Co se naučíte:
Hromádky
Stack container in STL is a type of container adapters. Používá se k replikaci datové struktury zásobníku v C ++. Zásobník kontejner je sada prvků, ve kterých jsou prvky vloženy na jednom konci a jsou také odstraněny na stejném konci.
Tento společný bod přidávání a mazání je známý jako „Top of the stack“.
Obrázkové znázornění zásobníku je uvedeno níže.
Jak je znázorněno ve výše uvedeném znázornění, zásobník je kontejner, ve kterém jsou přidávány a mazány prvky ze stejného konce, který se nazývá Horní část zásobníku.
Vzhledem k tomu, že přidávání a mazání probíhá na stejném konci, můžeme říci, že kontejner zásobníku je typ práce LIFO (poslední dovnitř, první ven). To znamená, že prvkem přidaným jako první bude odstraněn poslední.
Abychom mohli implementovat zásobník zásobníku, musíme do našeho programu zahrnout záhlaví.
#include
Syntaxe obecné deklarace pro zásobník zásobníku je:
stack stackName;
Stack operace
Dále pojďme diskutovat o různých operacích, které podporuje kontejner zásobníku v STL.
- tam : operace push se používá k vložení prvku do zásobníku. Tato operace vždy přidá prvky v horní části zásobníku.
Zvažte prázdný zásobník mystack typu integer .
Dále přidáme prvek 1 do zásobníku.
Poté přidáme prvek 3 do zásobníku.
Podle vyobrazení je v důsledku operace push prvek přidán do horní části zásobníku. Po každé operaci push se velikost stohu zvýší o 1.
- pop : pop operace se používá k odebrání prvku ze zásobníku. Odstraněný prvek je ten, na který ukazuje horní část zásobníku. V důsledku operace pop se velikost zásobníku zmenší o 1.
Podívejme se, jak vypadá popová operace:
Vezměme si stack mystack jako výše, ve kterém jsme již tlačili 2 prvky.
Nyní zavoláme funkci pop (). Když je toto volání provedeno, prvek v horní části zásobníku je odstraněn a „Horní“ ukazuje na další prvek, jak je znázorněno níže.
Pokud znovu zavoláme pop (), bude odstraněn další prvek (v tomto případě 1), což povede k prázdnému zásobníku.
testování jednotky testování integrace testování systému
- horní : Vrátí nejvyšší prvek zásobníku.
- prázdný : Zkontroluje, zda je zásobník prázdný nebo ne.
- velikost: Vrátí velikost zásobníku, tj. Počet prvků v zásobníku.
Níže je uveden příklad implementace Stack pro lepší pochopení operací.
#include #include using namespace std; void printStack(stack stk) { while (!stk.empty()) { cout << ' ' << stk.top(); stk.pop(); } cout << '
'; } int main () { stack oddstk; oddstk.push(1); oddstk.push(3); oddstk.push(5); oddstk.push(7); oddstk.push(9); cout << 'The stack is : '; printStack(oddstk); cout << '
Size of stack: ' << oddstk.size(); cout << '
Top of stack: ' << oddstk.top(); cout << '
oddstk.pop() : '; oddstk.pop(); printStack(oddstk); cout<<'
Another pop(): '; oddstk.pop(); printStack(oddstk); return 0; }
Výše uvedený příklad jasně ukazuje operaci push, která generuje zásobník. Ukazuje také zásobník po dvou po sobě jdoucích operacích popu.
Tak jsme viděli zásobník a jeho operace v STL. Dále v tomto tutoriálu uvidíme podrobnou implementaci ještě dalšího jednoduchého kontejneru STL, kterým je „Fronta“.
Fronta
Fronta je ještě další kontejner v STL, který je také velmi jednoduchý a užitečný. Kontejner fronty je replikou datové struktury fronty v C ++. Na rozdíl od zásobníku jsou v kontejneru fronty dva konce, tj. Přední a zadní.
Prvky jsou přidány do fronty vzadu, zatímco jsou odstraněny z přední části fronty. Fronta obecně používá typ uspořádání FIFO (první dovnitř, první ven).
Chcete-li implementovat kontejner fronty v programu, musíme do kódu zahrnout záhlaví.
#include
Obecná syntaxe pro deklaraci fronty je:
fronta queue_name;
Kontejner fronty deklarujeme takto:
Queue myqueue;
Operace fronty
Nyní uvidíme různé operace podporované frontou.
- tam: Funkce „push“ přidá prvek na konec fronty, tj. Na zadní stranu fronty.
- pop: Funkce „pop“ odstraní první prvek ve frontě, tj. Prvek před frontou.
Pochopme funkce push a pop fronty.
Zvažte prázdnou frontu deklarovanou nad myqueue. Nyní posuneme sudé číslo 2 do fronty s operací
myqueue.push (2);
Nyní bude fronta vypadat takto:
Dále přidáme „4“ do fronty s voláním „myqueue.push (4)“.
Nyní fronta vypadá takto:
Jak je vidět výše, prvky jsou tlačeny do fronty ze zadního konce nebo zezadu.
Nyní pojďme popojít s myqueue.
myqueue.pop ();
Jak tedy vidíme, při volání pop () je odstraněn prvek před frontou. To znamená, že první prvek, který je zadán do fronty, je prvním prvkem, který je mimo frontu.
- přední: Tato funkce vrací odkaz na první prvek ve frontě.
- zadní: Zpět vrátí odkaz na poslední prvek ve frontě.
- prázdný: Zkontroluje, zda je fronta prázdná.
- velikost: Vrátí velikost fronty, tj. Počet prvků ve frontě.
Níže je uveden ukázkový program, který demonstruje operace používané kontejnerem fronty.
#include #include using namespace std; void printQueue(queue myqueue) { queue secqueue = myqueue; while (!secqueue.empty()) { cout << ' ' << secqueue.front(); secqueue.pop(); } cout << '
'; } int main() { queue myqueue; myqueue.push(2); myqueue.push(4); myqueue.push(6); myqueue.push(8); cout << 'The queue myqueue is : '; printQueue(myqueue); cout << '
myqueue.size() : ' << myqueue.size(); cout << '
myqueue.front() : ' << myqueue.front(); cout << '
myqueue.back() : ' << myqueue.back(); cout << '
myqueue.pop() : '; myqueue.pop(); printQueue(myqueue); return 0; }
Výstup:
Fronta fronty je: 2 4 6 8
myqueue.size (): 4
myqueue.front (): 2
myqueue.back (): 8
myqueue.pop (): 4 6 8
Jak je uvedeno výše, nejprve deklarujeme kontejner fronty. Poté pomocí operace push do ní přidáme první čtyři sudá čísla. Poté vyjmeme prvek z fronty a zobrazíme změněnou frontu.
nedefinovaný odkaz na třídu c ++
Závěr
S tímto jsme se dostali na konec tohoto tutoriálu o zásobnících a frontách. Jak již bylo zmíněno, jedná se o nejjednodušší kontejnery, které máme v STL. Další variace kontejneru fronty je známá jako „Prioritní fronta“.
V našem nadcházejícím tutoriálu budeme diskutovat o prioritní frontě v STL !!
=> Navštivte zde a dozvíte se C ++ od nuly.