Sukraukite į C ++ STL su pavyzdžiu

Turinys:

Anonim

Kas yra „std :: stack“?

„Stack“ yra duomenų struktūra, veikianti remiantis LIFO („Last In First Out“) technika. „Std :: stack“ leidžia elementus pridėti ir pašalinti tik iš vieno galo.

„Std :: stack“ klasė yra talpyklos adapteris. Konteinerių objektuose saugomi panašaus tipo duomenys. Galite sukurti kaminą iš įvairių sekos konteinerių. Jei nėra talpyklos, pagal numatytuosius nustatymus bus naudojama deque containe. Konteinerių adapteriai nepalaiko iteratorių, todėl jo negalima naudoti manipuliuojant duomenimis.

Šioje C ++ pamokoje sužinosite

  • Kas yra „std :: stack“?
  • „Stack Syntax“
  • Narių tipai
  • Operacijos „Stack“
  • „Stack“ įgyvendinimas
  • stumti () ir pop ()
  • tuščias (), dydis (), viršus ()
  • emplace () ir swap ()
  • Sukrauti į STL

„Stack Syntax“

Norėdami sukurti rietuvę, į savo kodą turime įtraukti antraštės failą . Tada mes naudojame šią sintaksę norėdami apibrėžti „std :: stack“:

template  > class stack;
  • Tipas - elemento, esančio std :: stack, tipas. Tai gali būti bet koks galiojantis C ++ tipas arba net vartotojo apibrėžtas tipas.
  • Konteineris - yra pagrindinio konteinerio objekto tipas.

Narių tipai

Čia yra kamino narių tipai:

  • value_type- Pirmasis šablono parametras T. Jis žymi elementų tipus.
  • container_type- Antrasis šablono parametras „Container“. Tai žymi pagrindinį konteinerio tipą.
  • size_type- Nepasirašytas integralinis tipas.

Operacijos „Stack“

C ++ kaminas palaiko šias pagrindines operacijas:

  • stumti - jis prideda / įstumia daiktą į kaminą.
  • pop - jis pašalina / iššoka elementą iš kamino.
  • žvilgtelėjimas - grąžina viršutinį kamino elementą jo nepašalinus.
  • isFull - patikrina, ar kaminas pilnas.
  • isTuščias - patikrina, ar kaminas tuščias.

„Stack“ įgyvendinimas

1 žingsnis) Iš pradžių turime tuščią kaminą. Tuščio kamino viršus nustatytas į -1.

2 žingsnis) Tada mes įstumėme elementą 5 į kaminą. Kamino viršus bus nukreiptas į 5 elementą.

3 žingsnis) Tada mes įstumėme elementą 50 į kaminą. Kamino viršus pasislenka ir nukreiptas į 50 elementą.

4 žingsnis) Tada atlikome pop operaciją, pašalindami viršutinį elementą iš kamino. Elementas 50 iššokęs iš kamino. Dabar kamino viršus rodo 5 elementą.

stumti () ir pop ()

„Stack :: push“) funkcijos prideda naują elementą į rietuvės viršų. Po įdėjimo kamino dydis padidėja 1. Funkcija naudoja šią sintaksę:

stack.push(value)

Vertė yra elementas, kurį reikia įterpti į rietuvę.

„Stack :: pop“ () funkcija pašalina viršutinį kamino elementą. Tai yra naujausias kamino elementas. Po nuėmimo kamino dydis sumažėja 1. Čia yra funkcijos sintaksė:

stack.pop()

Funkcijai nereikia jokių parametrų.

1 pavyzdys:

#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();}}

Išvestis:

Čia yra kodo ekrano kopija:

Kodo paaiškinimas:

  1. Įtraukite „iostream“ antraštės failą į mūsų kodą, kad galėtumėte naudoti jo funkcijas.
  2. Įtraukite kamino antraštės failą į mūsų kodą, kad galėtumėte naudoti jo funkcijas.
  3. Įtraukite standartinę vardų sritį į mūsų kodą, kad galėtumėte naudoti jos klases nepaskambinę.
  4. Iškvieskite pagrindinę () funkciją. Programos logika turėtų būti įtraukta į šią funkciją.
  5. Sukurkite kamino st, kad išsaugotumėte sveikųjų skaičių reikšmes.
  6. Jei norite įterpti 10 vertę į kaminą, naudokite „push“ () funkciją.
  7. Jei norite įterpti 20 vertę į kaminą, naudokite „push“ () funkciją.
  8. Jei norite įterpti 30 vertę į kaminą, naudokite „push“ () funkciją.
  9. Jei norite įterpti 40 vertę į kaminą, naudokite „push“ () funkciją.
  10. Naudokite pop () funkciją, kad pašalintumėte viršutinį elementą iš kamino, tai yra 40. Viršutinis elementas dabar tampa 30.
  11. Naudokite pop () funkciją, kad pašalintumėte viršutinį elementą iš kamino, tai yra 30. Viršutinis elementas dabar tampa 20.
  12. Naudokite „while loop“ ir „empty ()“ funkciją, kad patikrintumėte, ar rietuvė NE tuščia. The! yra NE operatorius.
  13. Spausdinant dabartinį kamino turinį ant konsolės.
  14. Iškvieskite „pop“ („stack“) funkciją.
  15. „Loop“ kūno pabaiga.
  16. Pagrindinės () funkcijos kūno pabaiga.

tuščias (), dydis (), viršus ()

„Stacks“ turi integruotas funkcijas, kurias galite naudoti norėdami žaisti su kaupu ir jo vertėmis. Jie apima:

  • tuščias () - patikrina, ar kaminas tuščias, ar ne.
  • size () - pateikia rietuvės dydį, tai yra elementų skaičių rietuvėje.
  • viršuje () - pasiekia kamino elementą viršuje.

2 pavyzdys:

#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;}

Išvestis:

Čia yra kodo ekrano kopija:

Kodo paaiškinimas:

  1. Įtraukite „iostream“ antraštės failą į mūsų kodą, kad galėtumėte naudoti jo funkcijas.
  2. Įtraukite kamino antraštės failą į mūsų kodą, kad galėtumėte naudoti jo funkcijas.
  3. Įtraukite standartinę vardų sritį į mūsų programą, kad galėtumėte naudoti jos klases nepaskambinę.
  4. Sukurkite funkciją „createStack“, kurią galime naudoti sukurdami „stack stack“. Šūsnis talpins skaičių skaičių rinkinį.
  5. Funkcijos „createStack“ kūno pradžia.
  6. Sukurkite „mystack“ duomenų tipo egzempliorių ir suteikdami jam pavadinimą ms.
  7. Naudokite „while“ kilpą ir tuščią () funkciją, kad patikrintumėte, ar kaminas tuščias.
  8. „Loop“ kūno pradžia.
  9. Naudokite funkciją top (), saugomą kamino viršuje. Simbolis \ t sukurs naują skirtuką.
  10. Norėdami pašalinti elementą rietuvės viršuje, naudokite funkciją „pop“ („pop“).
  11. „Loop“ kūno pabaiga.
  12. Ant konsolės atspausdinkite tuščią eilutę.
  13. Funkcijos „createStack“ teksto pabaiga.
  14. Iškvieskite pagrindinę () funkciją. Programos logika turėtų būti įtraukta į pagrindinės () funkcijos turinį.
  15. Funkcijos kūno pradžia main ().
  16. Sukurkite kamino objektą g.
  17. Norėdami įdėti elementą 32 į kaminą, naudokite „push“ () funkciją.
  18. Norėdami įterpti elementą 21 į kaminą, naudokite „push“ () funkciją.
  19. Norėdami įdėti elementą 39 į kaminą, naudokite „push“ () funkciją.
  20. Norėdami įdėti 89 elementą į kaminą, naudokite „push“ () funkciją.
  21. Norėdami įdėti elementą 25 į kaminą, naudokite „push“) funkciją.
  22. Atsispausdinkite tekstą konsolėje.
  23. Iškvieskite „createStack“ funkciją, kad atliktumėte aukščiau nurodytas įterpimo operacijas į rietuvę.
  24. Spausdinkite rietuvės dydį konsolėje kartu su kitu tekstu.
  25. Atsispausdinkite elementą konsolės viršuje.
  26. Atsispausdinkite tekstą konsolėje.
  27. Ištrinkite elementą kamino viršuje. Tada jis grąžins kaminus likusius elementus.
  28. Norėdami atlikti aukščiau nurodytas operacijas, iškvieskite „createStack“ funkciją.
  29. Sėkmingai baigus, programa turi grąžinti vertę.
  30. Funkcijos kūno pabaiga main ().

emplace () ir swap ()

Tai yra kitos integruotos kamino funkcijos:

  • emplace () - sukonstruoja, tada į kamino viršų įterpia naują elementą.
  • swap () - keičia kamino turinį su kito kamino turiniu.

3 pavyzdys:

#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();}}

Išvestis:

Čia yra kodo ekrano kopija:

Kodo paaiškinimas:

  1. Įtraukite „iostream“ antraštės failą į mūsų kodą, kad galėtumėte naudoti jo funkcijas.
  2. Įtraukite kamino antraštės failą į mūsų kodą, kad galėtumėte naudoti jo funkcijas.
  3. Įtraukite „cstdlib“ antraštės failą į mūsų kodą, kad galėtumėte naudoti jo funkcijas.
  4. Įtraukite standartinę vardų sritį į mūsų kodą, kad galėtumėte naudoti jos klases nepaskambinę.
  5. Iškvieskite pagrindinę () funkciją. Programos logika bus pridėta šios funkcijos tekste.
  6. Paskelbkite kaminą pavadinimu st1, kad išsaugotumėte sveikųjų skaičių vertes.
  7. Paskelbkite kaminą pavadinimu st2, kad išsaugotumėte sveikųjų skaičių vertes.
  8. Norėdami įterpti sveikąjį skaičių 12 į kaminą, pavadintą st1, naudokite funkciją „emplace“).
  9. Norėdami įterpti sveikąjį skaičių 19 į kaminą, pavadintą st1, naudokite funkciją „emplace“).
  10. Naudokite funkciją „emplace“), kad įterptumėte skaičių 20 į steką pavadinimu „st2“.
  11. Norėdami įterpti sveikąjį skaičių 23 į kaminą, pavadintą st2, naudokite funkciją „emplace“).
  12. Naudodamiesi sukeitimo () funkcija galite sukeisti dviejų kaminų, st1 ir st2, turinį. Šūsnies st1 turinys turėtų būti perkeltas į kaminą st2. Šūsnies st2 turinys turėtų būti perkeltas į kaminą st1.
  13. Atsispausdinkite tekstą konsolėje.
  14. Naudokite „while“ sakinį ir tuščią () funkciją, kad patikrintumėte, ar kaminas st1 nėra tuščias.
  15. Spausdinkite rietuvės st1 turinį ant konsolės. "" Prideda vietos tarp kamino elementų, kai spausdinami ant konsolės.
  16. Norėdami pašalinti viršutinį elementą, vykdykite „st (st1“) funkciją „pop“ („pop“).
  17. Teiginio „while“ teksto pabaiga.
  18. Atsispausdinkite tekstą konsolėje. Pabaiga yra C ++ raktinis žodis, skirtas pabaigos linijai. Jis perkelia pelės žymeklį į kitą eilutę ir pradeda spausdinti iš ten.
  19. Naudokite „while“ sakinį ir tuščią () funkciją, kad patikrintumėte, ar krūva st2 nėra tuščia.
  20. Ant konsolės atspausdinkite kamino st2 turinį. "" Prideda vietos tarp kamino elementų, kai spausdinami ant konsolės.
  21. Norėdami pašalinti viršutinį elementą, vykdykite „st (st2“) funkciją pop ().
  22. Teiginio „while“ teksto pabaiga.
  23. Pagrindinės () funkcijos kūno pabaiga.

Sukrauti į STL

STL (standartinė šablonų biblioteka) yra su šablonų klasėmis, kurios teikia bendras C ++ duomenų struktūras. Todėl kaminas taip pat gali būti įdiegtas STL. Mes tiesiog įtraukiame šią biblioteką į savo kodą ir naudojame ją apibrėždami kaminą.

stack st;

Pirmiau nurodyta sintaksė deklaruoja T duomenų tipo elementų kaminą st.

3 pavyzdys:

#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();}

Išvestis:

Čia yra kodo ekrano kopija:

Kodo paaiškinimas:

  1. Įtraukite „iostream“ antraštės failą į mūsų kodą, kad galėtumėte naudoti jo funkcijas.
  2. Įtraukite kamino antraštės failą į mūsų kodą, kad galėtumėte naudoti jo funkcijas.
  3. Įtraukite „cstdlib“ antraštės failą į mūsų kodą, kad galėtumėte naudoti jo funkcijas.
  4. Įtraukite standartinę vardų sritį į mūsų kodą, kad galėtumėte naudoti jos klases nepaskambinę.
  5. Iškvieskite pagrindinę () funkciją. Programos logika turėtų būti įtraukta į šios funkcijos tekstą.
  6. Deklaruokite kamino st, kad išsaugotumėte sveikųjų skaičių duomenis.
  7. Pridėkite elementą 12 prie kamino.
  8. Pridėkite elementą 19 prie kamino.
  9. Pridėkite elementą 20 prie kamino.
  10. Atsispausdinkite elementą konsolės viršuje.
  11. Spausdinkite rietuvės dydį ant konsolės.
  12. Funkcijos pagrindinė () kūno pabaiga.

Santrauka:

  • „Stack“ yra duomenų struktūra, veikianti remiantis LIFO („Last In first Out“) technika.
  • Std :: stack leidžia pridėti ir pašalinti elementus tik iš vieno galo.
  • „Std :: stack“ klasė yra talpyklos adapteris, talpinantis panašaus tipo daiktus.
  • Krūvą galima sukurti iš įvairių sekos konteinerių.
  • Jei nepateiksite sudėtinio rodinio, pagal numatytuosius nustatymus bus naudojamas „deque“ konteineris.
  • „Push“ () funkcija skirta įterpti daiktus į rietuvę.
  • „Pop“ („Pop“) funkcija skirta pašalinti viršutinį elementą iš žingsnio.
  • Funkcija tuščia () yra skirta patikrinti, ar kaminas tuščias.