Sakrauj C ++ STL ar piemēru

Satura rādītājs:

Anonim

Kas ir std :: stack?

Steks ir datu struktūra, kas darbojas, pamatojoties uz LIFO (Last In First Out) tehniku. Std :: stack ļauj elementus pievienot un noņemt tikai no viena gala.

Std :: stack klase ir konteineru adapteris. Konteineru objektos glabājas līdzīga veida dati. Jūs varat izveidot kaudzīti no dažādiem secības konteineriem. Ja konteiners nav paredzēts, pēc noklusējuma tiks izmantota deque containe. Konteineru adapteri neatbalsta atkārtotājus, tāpēc tos nevar izmantot, lai manipulētu ar datiem.

Šajā C ++ apmācībā jūs uzzināsiet

  • Kas ir std :: stack?
  • Steka sintakse
  • Dalībnieku veidi
  • Operācijas kaudzē
  • Steka ieviešana
  • push () un pop ()
  • tukšs (), izmērs (), augšējais ()
  • emplace () un swap ()
  • Kaudze STL

Steka sintakse

Lai izveidotu kaudzīti, mūsu kodā jāiekļauj galvenes fails . Pēc tam mēs izmantojam šo sintaksi, lai definētu std :: stack:

template  > class stack;
  • Type - ir elementa tips, kas atrodas std :: stack. Tas var būt jebkurš derīgs C ++ tips vai pat lietotāja definēts tips.
  • Konteiners - ir pamatā esošā konteinera objekta tips.

Dalībnieku veidi

Šeit ir kaudzes dalībnieku veidi:

  • value_type - pirmais veidnes parametrs T. Tas apzīmē elementu tipus.
  • container_type - otrais veidnes parametrs Container. Tas apzīmē pamatā esošo konteinera tipu.
  • size_type- neparakstīts integrālā tips.

Operācijas kaudzē

C ++ kaudze atbalsta šādas pamatdarbības:

  • push - Tas pievieno / iespiež vienumu kaudzē.
  • pop - tas noņem / izvelk vienumu no kaudzes.
  • palūrēt - atgriež augšējo kaudzes vienumu, to nenoņemot.
  • isFull - pārbauda, ​​vai kaudze ir pilna.
  • isTukšs - pārbauda, ​​vai kaudze ir tukša.

Steka ieviešana

1. solis. Mums sākotnēji ir tukša kaudze. Tukšas kaudzes augšdaļa ir iestatīta uz -1.

2. solis. Tālāk mēs esam iestūmuši elementu 5 kaudzē. Steka augšdaļa būs vērsta uz 5. elementu.

3. solis. Tālāk mēs esam iebīdījuši elementu 50 kaudzē. Kaudzes augšdaļa nobīdās un norāda uz elementu 50.

4. solis. Pēc tam mēs esam veikuši pop darbību, noņemot augšējo elementu no kaudzes. Elements 50 tiek izlaists no kaudzes. Steka augšdaļa tagad norāda uz 5. elementu.

push () un pop ()

Steka :: push () funkcijas pievieno jaunu vienumu kaudzes augšdaļā. Pēc ievietošanas kaudzes izmērs tiek palielināts par 1. Funkcija izmanto šo sintaksi:

stack.push(value)

Vērtība ir vienums, kas jāievieto kaudzē.

Funkcija Stack :: pop () noņem kaudzes augšējo elementu. Šis ir jaunākais kaudzes vienums. Pēc noņemšanas kaudzes izmērs tiek samazināts par 1. Šeit ir funkciju sintakse:

stack.pop()

Funkcijai nav parametru.

1. piemērs:

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

Izeja:

Šeit ir koda ekrānuzņēmums:

Koda skaidrojums:

  1. Iekļaujiet iostream galvenes failu mūsu kodā, lai izmantotu tā funkcijas.
  2. Iekļaujiet kaudzes galvenes failu mūsu kodā, lai izmantotu tā funkcijas.
  3. Iekļaujiet standarta koda telpu mūsu kodā, lai izmantotu tās klases, to neizsaucot.
  4. Izsauciet galveno () funkciju. Šajā funkcijā jāpievieno programmas loģika.
  5. Lai saglabātu veselu skaitļu vērtības, izveidojiet kaudzes st.
  6. Izmantojiet push () funkciju, lai ievietotu kaudzē vērtību 10.
  7. Izmantojiet push () funkciju, lai ievietotu vērtību 20 kaudzē.
  8. Izmantojiet push () funkciju, lai kaudzē ievietotu vērtību 30.
  9. Izmantojiet push () funkciju, lai ievietotu kaudzē vērtību 40.
  10. Izmantojiet funkciju pop (), lai noņemtu augšējo elementu no kaudzes, tas ir, 40. Augšējais elements tagad kļūst par 30.
  11. Izmantojiet funkciju pop (), lai noņemtu augšējo elementu no kaudzes, tas ir, 30. Tagad augšējais elements kļūst par 20.
  12. Izmantojiet funkciju while loop un empty (), lai pārbaudītu, vai kaudze NAV tukša. The! ir NAV operators.
  13. Pašreizējā kaudzes satura drukāšana uz konsoles.
  14. Izsauciet steka pop () funkciju.
  15. Kaut cikla ķermeņa beigas.
  16. Galvenās () funkcijas ķermeņa beigas.

tukšs (), izmērs (), augšējais ()

Stekiem ir iebūvētas funkcijas, kuras varat izmantot, lai spēlētos ar steku un tā vērtībām. Tie ietver:

  • tukšs () - pārbauda, ​​vai kaudze ir tukša.
  • size () - atgriež kaudzes lielumu, tas ir, kaudzē esošo elementu skaitu.
  • top () - piekļūst kaudzes elementam augšpusē.

2. piemērs:

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

Izeja:

Šeit ir koda ekrānuzņēmums:

Koda skaidrojums:

  1. Iekļaujiet iostream galvenes failu mūsu kodā, lai izmantotu tā funkcijas.
  2. Iekļaujiet kaudzes galvenes failu mūsu kodā, lai izmantotu tā funkcijas.
  3. Iekļaujiet standarta nosaukumu telpu mūsu programmā, lai izmantotu tās klases, to neizsaucot.
  4. Izveidojiet funkciju createStack, kuru mēs varam izmantot kaudzes mistaka izveidošanai. Steks saturēs veselu skaitļu kopu.
  5. Funkcijas createStack pamatteksta sākums.
  6. Izveidojiet mistack datatipa instanci un piešķiriet tai vārdu ms.
  7. Izmantojiet funkciju while un tukšo (), lai pārbaudītu, vai kaudze ir tukša.
  8. While cilpas ķermeņa sākums.
  9. Izmantojiet kaudzes augšpusē saglabāto funkciju top (). Raksts \ t izveidos jaunu cilni.
  10. Izmantojiet funkciju pop (), lai dzēstu elementu kaudzes augšdaļā.
  11. Kaut cikla ķermeņa beigas.
  12. Uz konsoles izdrukājiet tukšu līniju.
  13. Funkcijas createStack pamatteksta beigas.
  14. Izsauciet galveno () funkciju. Programmas loģika jāpievieno galvenās () funkcijas pamattekstā.
  15. Funkcijas ķermeņa sākums main ().
  16. Izveidojiet kaudzes objekta st.
  17. Izmantojiet push () funkciju, lai ievietotu elementu 32 kaudzē.
  18. Izmantojiet push () funkciju, lai ievietotu elementu 21 kaudzē.
  19. Izmantojiet push () funkciju, lai ievietotu elementu 39 kaudzē.
  20. Izmantojiet push () funkciju, lai ievietotu elementu 89 kaudzē.
  21. Izmantojiet push () funkciju, lai ievietotu elementu 25 kaudzē.
  22. Izdrukājiet tekstu konsolē.
  23. Lai veiktu iepriekš minētās ievietošanas darbības kaudzē, izsauciet funkciju createStack.
  24. Drukājiet kaudzes izmēru konsolē līdzās citam tekstam.
  25. Izdrukājiet elementu konsoles kaudzes augšdaļā.
  26. Izdrukājiet tekstu konsolē.
  27. Dzēsiet elementu kaudzes augšdaļā. Pēc tam tas atgriezīs kaudzē palikušos elementus.
  28. Lai veiktu iepriekš minētās darbības, izsauciet funkciju createStack.
  29. Pēc sekmīgas pabeigšanas programmai ir jāatgriež vērtība.
  30. Funkcijas galvenā daļa ().

emplace () un swap ()

Šīs ir citas iebūvētās kaudzes funkcijas:

  • emplace () - konstruē, pēc tam ievieto jaunu elementu kaudzes augšdaļā.
  • swap () - apmaina kaudzes saturu ar cita kaudzes saturu.

3. piemērs:

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

Izeja:

Šeit ir koda ekrānuzņēmums:

Koda skaidrojums:

  1. Iekļaujiet iostream galvenes failu mūsu kodā, lai izmantotu tā funkcijas.
  2. Iekļaujiet kaudzes galvenes failu mūsu kodā, lai izmantotu tā funkcijas.
  3. Iekļaujiet cstdlib galvenes failu mūsu kodā, lai izmantotu tā funkcijas.
  4. Iekļaujiet standarta koda telpu mūsu kodā, lai izmantotu tās klases, to neizsaucot.
  5. Izsauciet galveno () funkciju. Programmas loģika tiks pievienota šīs funkcijas pamattekstā.
  6. Lai saglabātu veselu skaitļu vērtības, paziņojiet kaudzīti ar nosaukumu st1.
  7. Lai saglabātu veselu skaitļu vērtības, paziņojiet kaudzīti ar nosaukumu st2.
  8. Izmantojiet funkciju emplace (), lai ievietotu veselu skaitli 12 kaudzītē ar nosaukumu st1.
  9. Izmantojiet funkciju emplace (), lai ievietotu veselu skaitli 19 kaudzītē ar nosaukumu st1.
  10. Izmantojiet funkciju emplace (), lai ievietotu veselu skaitli 20 kaudzītē ar nosaukumu st2.
  11. Izmantojiet funkciju emplace (), lai ievietotu veselu skaitli 23 kaudzē ar nosaukumu st2.
  12. Izmantojiet mijmaiņas () funkciju, lai apmainītu divu kaudzīšu - st1 un st2 - saturu. Steka st1 saturs jāpārvieto uz steka st2. Steka st2 saturs jāpārvieto uz steka st1.
  13. Izdrukājiet tekstu konsolē.
  14. Izmantojiet paziņojumu while un tukšo (), lai pārbaudītu, vai kaudze st1 nav tukša.
  15. Uz konsoles izdrukājiet kaudzes st1 saturu. "" Pievieno atstarpi starp kaudzes elementiem, tos drukājot uz konsoles.
  16. Lai noņemtu augšējo elementu, izpildiet pop () funkciju uz skursteņa st1.
  17. Paziņojuma teksta beigas.
  18. Izdrukājiet tekstu konsolē. Endl ir gala līnijas C ++ atslēgvārds. Tas pārvieto peles kursoru uz nākamo rindu, lai sāktu drukāšanu no turienes.
  19. Izmantojiet paziņojumu while un tukšo (), lai pārbaudītu, vai kaudze st2 nav tukša.
  20. Uz konsoles izdrukājiet kaudzes st2 saturu. "" Pievieno atstarpi starp kaudzes elementiem, tos drukājot uz konsoles.
  21. Izpildiet pop () funkciju uz steka st2, lai noņemtu augšējo elementu.
  22. Paziņojuma teksta beigas.
  23. Galvenās () funkcijas ķermeņa beigas.

Kaudze STL

STL (Standard Template Library) nāk ar veidņu klasēm, kas nodrošina kopīgas C ++ datu struktūras. Tāpēc kaudzīti var ieviest arī STL. Mēs vienkārši iekļaujam šo bibliotēku mūsu kodā un izmantojam to kaudzes definēšanai.

stack st;

Iepriekš minētā sintakse deklarē kaudzes st datu veida T elementiem.

3. piemērs:

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

Izeja:

Šeit ir koda ekrānuzņēmums:

Koda skaidrojums:

  1. Iekļaujiet iostream galvenes failu mūsu kodā, lai izmantotu tā funkcijas.
  2. Iekļaujiet kaudzes galvenes failu mūsu kodā, lai izmantotu tā funkcijas.
  3. Iekļaujiet cstdlib galvenes failu mūsu kodā, lai izmantotu tā funkcijas.
  4. Iekļaujiet standarta koda telpu mūsu kodā, lai izmantotu tās klases, to neizsaucot.
  5. Izsauciet galveno () funkciju. Šīs funkcijas pamattekstā jāpievieno programmas loģika.
  6. Deklarējiet kaudzes st, lai saglabātu veselu skaitļu datus.
  7. Pievienojiet elementu 12 kaudzei.
  8. Pievienojiet elementu 19 kaudzei.
  9. Pievienojiet elementu 20 kaudzei.
  10. Izdrukājiet elementu konsoles kaudzes augšdaļā.
  11. Uz konsoles izdrukājiet kaudzes izmēru.
  12. Funkcijas main (() korpusa beigas.

Kopsavilkums:

  • Steks ir datu struktūra, kas darbojas, pamatojoties uz LIFO (Last In first Out) tehniku.
  • Std :: stack ļauj vienumus pievienot un noņemt tikai no viena gala.
  • Std :: stack klase ir konteineru adapteris, kurā ir līdzīga veida datu vienumi.
  • No dažādiem secības konteineriem var izveidot kaudzīti.
  • Ja nenorādīsit konteineru, pēc noklusējuma tiks izmantots deque konteiners.
  • Funkcija push () paredzēta priekšmetu ievietošanai kaudzē.
  • Funkcija Pop () ir paredzēta augšējā vienuma noņemšanai no soļa.
  • Funkcija tukša () ir paredzēta, lai pārbaudītu, vai kaudze ir tukša.