logo

Stapel in C++ STL

Stapel sind eine Art Containeradapter mit LIFO-Funktion (Last In First Out), bei der ein neues Element an einem Ende (oben) hinzugefügt und ein Element nur an diesem Ende entfernt wird. Stack verwendet ein gekapseltes Objekt von beiden Vektor oder deque (standardmäßig) oder Liste (sequentielle Containerklasse) als zugrundeliegender Container und stellt einen bestimmten Satz von Mitgliedsfunktionen für den Zugriff auf seine Elemente bereit.

Javascript-Onload-Skript

Wenn Sie sich den grundlegenden Unterschied zwischen Stapel und Warteschlange nicht merken können, geben Sie einfach ein reales Beispiel für diese Unterscheidung an. Beim Stapeln von Büchern können wir problemlos das oberste Buch nehmen, und bei der Warteschlange denken Sie daran, wann Sie vorne in der Warteschlange stehen müssen Wenn Sie sich an einem Geldautomaten befinden, um Bargeld abzuheben, hat die erste Person, die sich in der Nähe des Geldautomaten befindet, die erste Chance, das Geld vom Geldautomaten abzuheben. Die Warteschlange ist also vom FIFO-Typ (First In First Out).



Stack-Syntax:-

Um einen Stack zu erstellen, müssen wir die Header-Datei in unseren Code einbinden. Anschließend verwenden wir diese Syntax, um den std::stack zu definieren:

VorlageKlassenstapel;

Typ – ist der Typ des im std::stack enthaltenen Elements. Es kann sich um einen beliebigen gültigen C++-Typ oder sogar um einen benutzerdefinierten Typ handeln.



Container – ist der Typ des zugrunde liegenden Containerobjekts.

Mitgliedstypen:-

value_type – Der erste Vorlagenparameter, T. Er bezeichnet die Elementtypen.



container_type – Der zweite Vorlagenparameter, Container. Es bezeichnet den zugrunde liegenden Containertyp.

size_type – Vorzeichenloser Integraltyp.

Die mit dem Stapel verbundenen Funktionen sind:
empty() – Gibt zurück, ob der Stapel leer ist – Zeitkomplexität: O(1)
size() – Gibt die Größe des Stapels zurück – Zeitkomplexität: O(1)
top() – Gibt einen Verweis auf das oberste Element des Stapels zurück – Zeitkomplexität: O(1)
push(g) – Fügt das Element „g“ oben im Stapel hinzu – Zeitkomplexität: O(1)
pop() – Löscht das zuletzt eingegebene Element des Stapels – Zeitkomplexität: O(1)

C++




#include> #include> using> namespace> std;> int> main() {> >stack<>int>>stack;> >stack.push(21);>// The values pushed in the stack should be of the same data which is written during declaration of stack> >stack.push(22);> >stack.push(24);> >stack.push(25);> >int> num=0;> >stack.push(num);> >stack.pop();> >stack.pop();> >stack.pop();> > >while> (!stack.empty()) {> >cout << stack.top() <<>' '>;> >stack.pop();> >}> }>

>

>

Ausgabe

22 21>

Zeitkomplexität: Die zeitliche Komplexität dieses Programms beträgt O(N), wobei N die Gesamtzahl der Elemente im Stapel ist. Die while-Schleife wird N-mal durchlaufen, entnimmt Elemente aus dem Stapel und gibt sie aus.

Raumkomplexität: Die räumliche Komplexität dieses Programms beträgt O(N), wobei N die Gesamtzahl der Elemente im Stapel ist. Die Stapeldatenstruktur verwendet Speicherplatz proportional zur Anzahl der darin gespeicherten Elemente. In diesem Fall beträgt die maximale Größe des Stapels 5, sodass die Raumkomplexität konstant ist und auch als O(1) betrachtet werden kann.

Rend-Karte

Code-Erklärung:

  1. Fügen Sie die iostream-Headerdatei oder in unseren Code ein, um ihre Funktionen zu nutzen.
  2. Fügen Sie die Stack-Header-Datei in unseren Code ein, um ihre Funktionen zu nutzen, falls sie bereits enthalten ist. Dann ist keine Stack-Header-Datei erforderlich, da sie bereits über integrierte Funktionen verfügt.
  3. Fügen Sie den std-Namespace in unseren Code ein, um seine Klassen zu verwenden, ohne ihn aufzurufen.
  4. Rufen Sie die Funktion main() auf. Die Programmlogik sollte innerhalb dieser Funktion hinzugefügt werden.
  5. Erstellen Sie einen Stapel zum Speichern ganzzahliger Werte.
  6. Verwenden Sie die Funktion push(), um den Wert 21 in den Stapel einzufügen.
  7. Verwenden Sie die Funktion push(), um den Wert 22 in den Stapel einzufügen.
  8. Verwenden Sie die Funktion push(), um den Wert 24 in den Stapel einzufügen.
  9. Verwenden Sie die Funktion push(), um den Wert 25 in den Stapel einzufügen.
  10. Verwenden Sie eine ganzzahlige Variablennummer, um einen Variablenwert einzugeben. Hier ist der Wert 0, aber wir können mit cin>> num einen beliebigen ganzzahligen Wert zuweisen.
  11. Verwenden Sie die Funktion push(), um den Wert der Variablen num einzufügen.
  12. Verwenden Sie die Funktion pop(), um das oberste Element vom Stapel zu entfernen, also 25. Das oberste Element wird jetzt zu 24.
  13. Verwenden Sie die Funktion pop(), um das oberste Element vom Stapel zu entfernen, also 24. Das oberste Element wird jetzt zu 22.
  14. Verwenden Sie eine While-Schleife und die Funktion empty(), um zu überprüfen, ob der Stapel NICHT leer ist. Der ! ist der NOT-Operator. Wenn der Stapel also nicht leer ist, gibt die Funktion empty() „false“ zurück und der NOT-Operator wandelt ihn in „true“ um und die while-Schleife läuft weiter. Wenn der Stapel jedoch leer ist, gibt die Funktion empty() true zurück und der Operator NOT macht ihn false und die Schleife endet.
  15. Drucken des aktuellen Inhalts des Stapels auf der Konsole.
  16. Rufen Sie die Funktion pop() auf dem Stapel auf.
  17. Ende des Körpers der while-Schleife.
  18. Ende des main()-Funktionskörpers.

Liste der Funktionen von Stack:

  • stack::top() in C++ STL
  • stack::empty() und stack::size() in C++ STL
  • stack::push() und stack::pop() in C++ STL
  • stack::swap() in C++ STL
  • stack::emplace() in C++ STL
  • Aktuelle Artikel zum C++-Stack