Zložite v C ++ STL s primerom

Kazalo:

Anonim

Kaj je std :: stack?

Sklop je podatkovna struktura, ki deluje na podlagi tehnike LIFO (Last In First Out). Stog std :: omogoča dodajanje in odstranjevanje elementov samo z enega konca.

Razred std :: stack je vmesnik vsebnika. Predmeti vsebnika vsebujejo podatke podobnega podatkovnega tipa. Sklop lahko ustvarite iz različnih vsebnikov zaporedja. Če posoda ni na voljo, bo privzeto uporabljena deka kontaina. Vmesniki vsebnikov ne podpirajo iteratorjev, zato jih ni mogoče uporabljati za obdelavo podatkov.

V tej vadnici C ++ se boste naučili

  • Kaj je std :: stack?
  • Skladnja sklada
  • Vrste članov
  • Operacije v skladišču
  • Izvajanje sklada
  • push () in pop ()
  • prazno (), velikost (), zgoraj ()
  • emplace () in swap ()
  • Zložite v STL

Skladnja sklada

Če želite ustvariti sklad, moramo v kodo vključiti datoteko glave . Nato s to sintakso definiramo std :: stack:

template  > class stack;
  • Type - je vrsta elementa v std :: stack. Lahko je kateri koli veljaven tip C ++ ali celo uporabniško določen tip.
  • Vsebnik - je vrsta osnovnega predmeta vsebnika.

Vrste članov

Tu so vrste članov skladov:

  • value_type - prvi parameter predloge, T. Označuje vrste elementov.
  • container_type - drugi parameter predloge, Container. Označuje osnovni tip vsebnika.
  • size_type - Nepodpisani integralni tip.

Operacije v skladišču

Sklop C ++ podpira naslednje osnovne operacije:

  • push - doda / potisne element v sklad.
  • pop - Odstrani / odpre element iz sklada.
  • peek - vrne zgornji element sklada, ne da bi ga odstranil.
  • isFull - Preveri, ali je sklad poln.
  • isEmpty - Preveri, ali je sklad prazen.

Izvajanje sklada

1. korak) Na začetku imamo prazen kup. Vrh praznega sklada je nastavljen na -1.

Korak 2) Nato smo element 5 potisnili v sklad. Zgornji del sklada bo usmerjen na element 5.

Korak 3) Nato smo potisnili element 50 v sklad. Vrh sklada se premakne in kaže na element 50.

4. korak) Nato smo izvedli pojavno operacijo in odstranili zgornji element iz sklada. Element 50 je izpuščen iz sklada. Zgornji del sklada zdaj kaže na element 5.

push () in pop ()

Funkcije stack :: push () dodajo nov element na vrh sklada. Velikost sklada se po vstavitvi poveča za 1. Funkcija ima to sintakso:

stack.push(value)

Vrednost je element, ki ga želite vstaviti v sklad.

Funkcija stack :: pop () odstrani zgornji element sklada. To je najnovejši element sklada. Velikost sklada se po odstranitvi zmanjša za 1. Tu je sintaksa funkcije:

stack.pop()

Funkcija ne zajema nobenih parametrov.

Primer 1:

#include #include using namespace std;int main() {stack st;st.push(10);st.push(20);st.push(30);st.push(40);st.pop();st.pop();while (!st.empty()) {cout << ' ' << st.top();st.pop();}}

Izhod:

Tu je posnetek zaslona kode:

Razlaga kode:

  1. V našo kodo vključite datoteko glave iostream, da boste lahko uporabljali njene funkcije.
  2. V našo kodo vključite datoteko glave sklada, da boste lahko uporabljali njene funkcije.
  3. V našo kodo vključite imenski prostor std, da lahko uporabljate njegove razrede, ne da bi ga poklicali.
  4. Pokličite glavno funkcijo. V to funkcijo je treba dodati programsko logiko.
  5. Ustvari niz skladov za shranjevanje celoštevilnih vrednosti.
  6. S funkcijo push () vstavite vrednost 10 v sklad.
  7. S funkcijo push () vstavite vrednost 20 v sklad.
  8. S pomočjo funkcije push () vstavite vrednost 30 v sklad.
  9. S funkcijo push () vstavite vrednost 40 v sklad.
  10. S funkcijo pop () odstranite zgornji element iz sklada, to je 40. Zgornji element zdaj postane 30.
  11. S funkcijo pop () odstranite zgornji element iz sklada, to je 30. Zgornji element zdaj postane 20.
  12. Uporabite funkcijo while loop in empty (), da preverite, ali sklad ni prazen. The! je operater NOT.
  13. Tiskanje trenutne vsebine sklada na konzoli.
  14. Pokličite funkcijo pop () na kupu.
  15. Konec telesa zanke while.
  16. Konec telesa glavne () funkcije.

prazno (), velikost (), zgoraj ()

Skladi imajo vgrajene funkcije, s katerimi se lahko poigrate s skladom in njegovimi vrednostmi. Tej vključujejo:

  • empty () - preveri, ali je sklad prazen ali ne.
  • size () - vrne velikost sklada, to je število elementov v kupčku.
  • top () - dostopa do elementa sklada na vrhu.

2. primer:

#include #include using namespace std;void createStack(stack  mystack){stack  ms = mystack;while (!ms.empty()){cout << '\t' << ms.top();ms.pop();}cout << '\n';}int main(){stack  st;st.push(32);st.push(21);st.push(39);st.push(89);st.push(25);cout << "The stack st is: ";createStack(st);cout << "\n st.size() : " << st.size();cout << "\n st.top() : " << st.top();cout << "\n st.pop() : ";st.pop();createStack(st);return 0;}

Izhod:

Tu je posnetek zaslona kode:

Razlaga kode:

  1. V našo kodo vključite glavo glave iostream, da boste lahko uporabljali njene funkcije.
  2. V našo kodo vključite datoteko glave sklada, da boste lahko uporabljali njene funkcije.
  3. V naš program vključite imenski prostor std, da lahko uporabljate njegove razrede, ne da bi ga poklicali.
  4. Ustvari funkcijo createStack, ki jo lahko uporabimo za ustvarjanje sklada mystack. Sklad vsebuje nabor celih števil.
  5. Začetek telesa funkcije createStack.
  6. Ustvarite primerek podatkovnega tipa mystack in mu dajte ime ms.
  7. Z zanko while in funkcijo empty () preverite, ali je sklad prazen.
  8. Začetek telesa zanke while.
  9. Uporabite funkcijo top (), shranjeno na vrhu sklada. Znak \ t bo ustvaril nov zavihek.
  10. S funkcijo pop () izbrišite element na vrhu sklada.
  11. Konec telesa zanke while.
  12. Na konzolo natisnite prazno vrstico.
  13. Konec telesa funkcije createStack.
  14. Pokličite glavno funkcijo. Logiko programa je treba dodati v telo funkcije main ().
  15. Začetek telesa funkcije main ().
  16. Ustvari objekt sklada st.
  17. S funkcijo push () vstavite element 32 v sklad.
  18. S pomočjo funkcije push () vstavite element 21 v sklad.
  19. S funkcijo push () vstavite element 39 v sklad.
  20. S pomočjo funkcije push () vstavite element 89 v sklad.
  21. S pomočjo funkcije push () vstavite element 25 v sklad.
  22. Na konzolo natisnite nekaj besedila.
  23. Za izvedbo zgornjih operacij vstavljanja v sklad pokličite funkcijo createStack.
  24. Na konzolo natisnite velikost sklada skupaj z drugim besedilom.
  25. Natisnite element na vrh sklada na konzoli.
  26. Na konzolo natisnite nekaj besedila.
  27. Izbrišite element na vrhu sklada. Nato bo vrnil preostale elemente v skladišču.
  28. Za izvedbo zgornjih operacij pokličite funkcijo createStack.
  29. Program mora po uspešnem zaključku vrniti vrednost.
  30. Konec telesa funkcije main ().

emplace () in swap ()

To so druge vgrajene funkcije sklada:

  • emplace () - konstruira nato vstavi nov element na vrh sklada.
  • swap () - izmenjuje vsebino skladov z vsebino drugega sklada.

3. primer:

#include #include #include using namespace std;int main() {stack st1;stack st2;st1.emplace(12);st1.emplace(19);st2.emplace(20);st2.emplace(23);st1.swap(st2);cout << "st1 = ";while (!st1.empty()) {cout << st1.top() << " ";st1.pop();}cout << endl << "st2 = ";while (!st2.empty()) {cout << st2.top() << " ";st2.pop();}}

Izhod:

Tu je posnetek zaslona kode:

Razlaga kode:

  1. V našo kodo vključite datoteko glave iostream, da boste lahko uporabljali njene funkcije.
  2. V našo kodo vključite datoteko glave sklada, da boste lahko uporabljali njene funkcije.
  3. V našo kodo vključite glavo cstdlib, da boste lahko uporabljali njene funkcije.
  4. V našo kodo vključite imenski prostor std, da lahko uporabljate njegove razrede, ne da bi ga poklicali.
  5. Pokličite glavno funkcijo. V telesu te funkcije bo dodana programska logika.
  6. Deklarirajte sklad z imenom st1 za shranjevanje celoštevilnih vrednosti.
  7. Deklarirajte sklad z imenom st2 za shranjevanje celoštevilnih vrednosti.
  8. S funkcijo emplace () vstavite celo število 12 v sklad z imenom st1.
  9. S funkcijo emplace () vstavite celo število 19 v sklad z imenom st1.
  10. S funkcijo emplace () vstavite celo število 20 v sklad z imenom st2.
  11. S funkcijo emplace () vstavite celo število 23 v sklad z imenom st2.
  12. S funkcijo swap () zamenjajte vsebino obeh skladov, st1 in st2. Vsebino sklada st1 je treba premakniti v sklad st2. Vsebino sklada st2 je treba premakniti v sklad st1.
  13. Na konzolo natisnite nekaj besedila.
  14. Uporabite stavek while in funkcijo empty (), da preverite, ali sklad st1 ni prazen.
  15. Na konzolo natisnite vsebino sklada st1. "Med dodajanjem prostora na elemente sklada doda prostor med tiskanjem na konzolo.
  16. Izvedite funkcijo pop () na kupu st1, da odstranite zgornji element.
  17. Konec telesa stavka while.
  18. Na konzolo natisnite nekaj besedila. Endl je ključna beseda C ++ za končno vrstico. Kazalec miške premakne v naslednjo vrstico, da začne tiskati od tam.
  19. Uporabite stavek while in funkcijo empty (), da preverite, ali sklad st2 ni prazen.
  20. Natisnite vsebino sklada st2 na konzolo. "Med dodajanjem prostora na elemente sklada doda prostor med tiskanjem na konzolo.
  21. Izvedite funkcijo pop () na skladu st2, da odstranite zgornji element.
  22. Konec telesa stavka while.
  23. Konec telesa glavne () funkcije.

Zložite v STL

STL (Standard Template Library) ima razrede predlog, ki zagotavljajo skupne podatkovne strukture C ++. Zato je sklad mogoče uporabiti tudi v STL. To knjižnico preprosto vključimo v našo kodo in z njo določimo sklad.

stack st;

Zgornja sintaksa razglaša sklad st za elemente podatkovnega tipa T.

3. primer:

#include #include #include using namespace std;int main() {stack st;st.push(12);st.push(19);st.push(20);cout << st.top();cout << st.size();}

Izhod:

Tu je posnetek zaslona kode:

Razlaga kode:

  1. V našo kodo vključite datoteko glave iostream, da boste lahko uporabljali njene funkcije.
  2. V našo kodo vključite datoteko glave sklada, da boste lahko uporabljali njene funkcije.
  3. V našo kodo vključite glavo cstdlib, da boste lahko uporabljali njene funkcije.
  4. V našo kodo vključite imenski prostor std, da lahko uporabljate njegove razrede, ne da bi ga poklicali.
  5. Pokličite glavno funkcijo. V telo te funkcije je treba dodati programsko logiko.
  6. Za shranjevanje celoštevilčnih podatkov razglasite st. St.
  7. Dodajte element 12 v sklad.
  8. V sklad dodajte element 19.
  9. Dodajte element 20 v sklad.
  10. Natisnite element na vrh sklada na konzoli.
  11. Na konzolo natisnite velikost sklada.
  12. Konec telesa funkcije main ().

Povzetek:

  • Sklop je podatkovna struktura, ki deluje na podlagi tehnike LIFO (Last In First Out).
  • Stog std :: omogoča samo dodajanje in odstranjevanje elementov z enega konca.
  • Razred std :: stack je vmesnik vsebnika, ki vsebuje elemente podobnega podatkovnega tipa.
  • Sklad je mogoče ustvariti iz različnih zabojnikov za zaporedje.
  • Če ne navedete vsebnika, bo privzeto uporabljen deque vsebnik.
  • Funkcija push () je namenjena vstavljanju predmetov v sklad.
  • Funkcija pop () je namenjena odstranjevanju zgornjega elementa iz koraka.
  • Funkcija empty () je namenjena preverjanju, ali je sklad prazen ali ne.