Pinoa C ++ STL: ään esimerkin avulla

Sisällysluettelo:

Anonim

Mikä on std :: pino?

Pino on tietorakenne, joka toimii LIFO (Last In First Out) -tekniikan perusteella. Std :: -pino sallii elementtien lisäämisen ja poistamisen vain toisesta päästä.

Std :: stack -luokka on konttiadapteri. Konttiobjektit sisältävät saman tyyppisiä tietoja. Voit luoda pinon useista sekvenssisäiliöistä. Jos konttia ei ole, deque containe käytetään oletuksena. Säiliösovittimet eivät tue iteraattoreita, joten sitä ei voida käyttää tietojen manipulointiin.

Tässä C ++ -opetusohjelmassa opit

  • Mikä on std :: pino?
  • Pino Syntaksi
  • Jäsentyypit
  • Toiminta pinossa
  • Pinon toteutus
  • työnnä () ja pop ()
  • tyhjä (), koko (), yläosa ()
  • Emplace () ja vaihda ()
  • Pino STL: ään

Pino Syntaksi

Pinon luomiseksi meidän on sisällytettävä -otsikkotiedosto koodiin. Sitten käytämme tätä syntaksia määrittelemään std :: stack:

template  > class stack;
  • Tyyppi - on standardin :: pino elementin tyyppi. Se voi olla mikä tahansa kelvollinen C ++ -tyyppi tai jopa käyttäjän määrittelemä tyyppi.
  • Säilö - on alla olevan säilöobjektin tyyppi.

Jäsentyypit

Tässä on pinotyyppityyppejä:

  • value_type- Ensimmäinen malliparametri T. Se tarkoittaa elementtityyppejä.
  • container_type- Toinen malliparametri, Container. Se tarkoittaa taustalla olevaa säilötyyppiä.
  • size_type- Allekirjoittamaton integraalityyppi.

Toiminta pinossa

C ++ -pino tukee seuraavia perustoimintoja:

  • push - Se lisää / työntää kohteen pinoon.
  • pop - Se poistaa / ponnahtaa kohteen pinosta.
  • kurkistus - Palauttaa pinon yläosan poistamatta sitä.
  • isFull - Tarkistaa, onko pino täynnä.
  • isEmpty - Tarkistaa, onko pino tyhjä.

Pinon toteutus

Vaihe 1) Aluksi meillä on tyhjä pino. Tyhjän pinon yläosaksi on asetettu -1.

Vaihe 2) Seuraavaksi olemme työntäneet elementin 5 pinoon. Pinon yläosa osoittaa elementtiin 5.

Vaihe 3) Seuraavaksi olemme työntäneet elementin 50 pinoon. Pinon yläosa siirtyy ja osoittaa elementtiin 50.

Vaihe 4) Olemme sitten suorittaneet pop-toiminnon poistamalla ylimmän elementin pinosta. Elementti 50 ponnahtaa pinosta. Pinon yläosa osoittaa nyt elementtiä 5.

työnnä () ja pop ()

Pino :: push () -toiminnot lisäävät uuden kohteen pinon yläosaan. Pinon kokoa lisätään 1: llä lisäyksen jälkeen. Funktio ottaa tämän syntaksin:

stack.push(value)

Arvo on pinoan lisättävä kohde.

Pino :: pop () -toiminto poistaa pinon yläosan. Tämä on pinon uusin kohde. Pinon kokoa pienennetään yhdellä poistamisen jälkeen. Tässä on funktion syntakse:

stack.pop()

Toiminto ei ota parametreja.

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

Tuotos:

Tässä on kuvakaappaus koodista:

Koodin selitys:

  1. Sisällytä iostream-otsikkotiedosto koodiin käyttääksesi sen toimintoja.
  2. Sisällytä pinon otsikkotiedosto koodiin käyttääksesi sen toimintoja.
  3. Sisällytä vakio nimitila koodissamme käyttääksesi luokkia sitä kutsumatta.
  4. Kutsu main () -toiminto. Ohjelmalogiikka tulisi lisätä tähän toimintoon.
  5. Luo pino st kokonaislukuarvojen tallentamiseksi.
  6. Lisää arvo 10 pinoon push () -toiminnon avulla.
  7. Lisää arvo 20 pinoon push () -toiminnon avulla.
  8. Lisää arvo 30 pinoon push () -toiminnon avulla.
  9. Lisää arvo 40 pinoon push () -toiminnon avulla.
  10. Käytä pop () -toimintoa poistaaksesi ylimmän elementin pinosta, eli 40. Yläosasta tulee nyt 30.
  11. Poista pop () -toiminto ylimmän elementin poistamisesta pinosta, eli 30. Yläosasta tulee nyt 20.
  12. Käytä hetken silmukka ja tyhjä () -toimintoa tarkistaaksesi, onko pino EI tyhjä. The! on EI operaattori.
  13. Nipun nykyisen sisällön tulostaminen konsolille.
  14. Kutsu pinon pop () -toiminto.
  15. While-silmukan rungon pää.
  16. Pääfunktion () rungon loppu.

tyhjä (), koko (), yläosa ()

Pinoissa on sisäänrakennetut toiminnot, joita voit käyttää pelaamiseen pinon ja sen arvojen kanssa. Nämä sisältävät:

  • tyhjä () - tarkistaa, onko pino tyhjä vai ei.
  • size () - palauttaa pinon koon, eli pinon elementtien lukumäärän.
  • top () - pääsee pinon elementtiin yläosassa.

Esimerkki 2:

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

Tuotos:

Tässä on kuvakaappaus koodista:

Koodin selitys:

  1. Sisällytä iostream-otsikkotiedosto koodiin, jotta voit käyttää sen toimintoja.
  2. Sisällytä pinon otsikkotiedosto koodiin, jotta voit käyttää sen toimintoja.
  3. Sisällytä vakio nimitila ohjelmaamme, jotta voit käyttää sen luokkia kutsumatta sitä.
  4. Luo funktio createStack, jonka avulla voimme luoda pinon mystackin. Pino sisältää joukon kokonaislukuja.
  5. CreateStack-funktion rungon alku.
  6. Luo mystack-tietotyypin esiintymä ja antamalla sille nimi ms.
  7. Käytä while-silmukkaa ja tyhjää () -toimintoa tarkistaaksesi, onko pino tyhjä.
  8. While-silmukan rungon alku.
  9. Käytä pinon yläosaan tallennettua top () -toimintoa. Merkki \ t luo uuden välilehden.
  10. Käytä pop () -toimintoa poistaaksesi pinon yläosan elementin.
  11. While-silmukan rungon pää.
  12. Tulosta tyhjä rivi konsolille.
  13. CreateStack-toiminnon rungon loppu.
  14. Kutsu main () -toiminto. Ohjelmalogiikka tulisi lisätä pääfunktion runkoon.
  15. Funktion rungon alku main ().
  16. Luo pinoobjekti st.
  17. Lisää elementti 32 pinoon painamalla push () -toimintoa.
  18. Aseta elementti 21 pinoon push () -toiminnon avulla.
  19. Lisää elementti 39 pinoon push () -toiminnon avulla.
  20. Lisää elementti 89 pinoon push () -toiminnon avulla.
  21. Aseta elementti 25 pinoon painamalla push () -toimintoa.
  22. Tulosta tekstiä konsolille.
  23. Kutsu createStack-toiminto suorittaaksesi yllä olevat lisäystoiminnot pinoon.
  24. Tulosta pinon koko konsolille muun tekstin viereen.
  25. Tulosta elementti pinon yläosassa konsolissa.
  26. Tulosta tekstiä konsolille.
  27. Poista elementti pinon yläosasta. Sitten se palauttaa pinossa jäljellä olevat elementit.
  28. Kutsu createStack-toiminto suorittamaan yllä olevat toiminnot.
  29. Ohjelman on palautettava arvo, kun se on suoritettu onnistuneesti.
  30. Funktion rungon pää main ().

Emplace () ja vaihda ()

Nämä ovat muita sisäänrakennettuja pino-toimintoja:

  • emplace () - konstruoi sitten uuden elementin pinon yläosaan.
  • swap () - vaihtaa pinon sisällön toisen pinon sisältöön.

Esimerkki 3:

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

Tuotos:

Tässä on kuvakaappaus koodista:

Koodin selitys:

  1. Sisällytä iostream-otsikkotiedosto koodiin käyttääksesi sen toimintoja.
  2. Sisällytä pinon otsikkotiedosto koodiin käyttääksesi sen toimintoja.
  3. Sisällytä cstdlib-otsikkotiedosto koodiin käyttääksesi sen toimintoja.
  4. Sisällytä vakio nimitila koodissamme käyttääksesi luokkia sitä kutsumatta.
  5. Kutsu main () -toiminto. Ohjelmalogiikka lisätään tämän toiminnon runkoon.
  6. Ilmoita pino nimeltä st1 kokonaislukuarvojen tallentamiseksi.
  7. Ilmoita pino nimeltään st2 kokonaislukuarvojen tallentamiseksi.
  8. Lisää kokonaisluku 12 emplace () -funktiolla pinoon nimeltä st1.
  9. Lisää kokonaisuus 19 emplace () -funktiolla pinoon nimeltä st1.
  10. Lisää kokonaisluku 20 emplace () -toiminnolla pinoon nimeltä st2.
  11. Lisää kokonaisluku 23 emplace () -funktiolla pinoon nimeltä st2.
  12. Käytä swap () -toimintoa vaihtaaksesi kahden pinon, st1 ja st2, sisällön. Pino st1 tulee siirtää pinoon st2. Pino st2 tulee siirtää pinoon st1.
  13. Tulosta tekstiä konsolille.
  14. Tarkista while-lauseella ja empty () -toiminnolla, onko pino st1 tyhjä.
  15. Tulosta pinon st1 sisältö konsolille. "" Lisää tilaa pinoelementtien väliin, kun ne tulostetaan konsolille.
  16. Suorita pino st1: n pop () -toiminto ylimmän elementin poistamiseksi.
  17. While-lauseen rungon loppu.
  18. Tulosta tekstiä konsolille. Endl on C ++ -avainsana loppuriville. Se siirtää hiiren kohdistimen seuraavalle riville aloittaaksesi tulostamisen sieltä.
  19. Tarkista while-lauseella ja empty () -toiminnolla, onko pino st2 tyhjä.
  20. Tulosta pinon st2 sisältö konsolille. "" Lisää tilaa pinoelementtien väliin, kun ne tulostetaan konsolille.
  21. Suorita pino st2: n pop () -toiminto ylimmän elementin poistamiseksi.
  22. While-lauseen rungon loppu.
  23. Pääfunktion () rungon pää.

Pino STL: ään

STL: n (Standard Template Library) mukana toimitetaan malliluokit, jotka tarjoavat yhteiset C ++ -tietorakenteet. Siksi pino voidaan toteuttaa myös STL: ssä. Sisällytämme tämän kirjaston yksinkertaisesti koodiin ja määritämme sen avulla pinon.

stack st;

Yllä oleva syntakse ilmoittaa pinon st tietotyypin T elementeille.

Esimerkki 3:

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

Tuotos:

Tässä on kuvakaappaus koodista:

Koodin selitys:

  1. Sisällytä iostream-otsikkotiedosto koodiin käyttääksesi sen toimintoja.
  2. Sisällytä pinon otsikkotiedosto koodiin käyttääksesi sen toimintoja.
  3. Sisällytä cstdlib-otsikkotiedosto koodiin käyttääksesi sen toimintoja.
  4. Sisällytä vakio nimitila koodissamme käyttääksesi luokkia sitä kutsumatta.
  5. Kutsu main () -toiminto. Ohjelmalogiikka tulisi lisätä tämän toiminnon runkoon.
  6. Ilmoita pino st kokonaislukutietojen tallentamiseksi.
  7. Lisää elementti 12 pinoon.
  8. Lisää elementti 19 pinoon.
  9. Lisää elementti 20 pinoon.
  10. Tulosta elementti pinon yläosassa konsolissa.
  11. Tulosta pinon koko konsolille.
  12. Funktion main () rungon pää.

Yhteenveto:

  • Pino on tietorakenne, joka toimii LIFO (Last In first Out) -tekniikan perusteella.
  • Std :: -pino sallii kohteiden lisäämisen ja poistamisen vain toisesta päästä.
  • Std :: stack-luokka on säilösovitin, johon mahtuu saman tyyppisiä tietoja.
  • Pino voidaan luoda erilaisista sekvenssisäiliöistä.
  • Jos et anna säiliötä, deque-säiliötä käytetään oletuksena.
  • Push () -toiminto on tarkoitettu kohteiden lisäämiseen pinoon.
  • Pop () -toiminto on tarkoitettu ylimmän kohteen poistamiseen vaiheesta.
  • Tyhjä () -toiminnolla tarkistetaan, onko pino tyhjä vai ei.