C++-Standardbibliothek<stack>

In C++ stellt die Standardbibliothek eine Vielzahl von Containern und Algorithmen bereit, um Entwicklern dabei zu helfen, Programme effizienter zu schreiben.

<stack>Er ist Teil der C++ Standard Template Library (STL) und implementiert eine Last-In-First-Out-(LIFO-)Datenstruktur. Diese Datenstruktur eignet sich sehr gut für Szenarien, in denen "das zuletzt hinzugefügte Element zuerst entfernt wird".

<stack>Der Container-Adapter stellt eine Stack-Schnittstelle bereit, die auf anderen Containern (wie z. B.dequeodervector) implementiert wird. Die Elemente des Stacks sind linear angeordnet, aber Hinzufüge- und Entfernungsoperationen sind nur an einem Ende (der Spitze des Stacks) erlaubt.

Grundlegende Operationen

  • push(): Fügt ein Element an der Spitze des Stacks hinzu.
  • pop(): Entfernt das oberste Element des Stacks.
  • top(): Gibt eine Referenz auf das oberste Element des Stacks zurück, ohne es zu entfernen.
  • empty(): Prüft, ob der Stack leer ist.
  • size(): Gibt die Anzahl der Elemente im Stack zurück.

Syntax

Das Folgende verwendet<stack>Grundlegende Syntax:

#include <iostream>
#include <stack>

int main() {
    std::stack<int> s;

    // 向栈中添加元素
    s.push(1);
    s.push(2);
    s.push(3);

    // 访问栈顶元素
    std::cout << "Top element is: " << s.top() << std::endl;

    // 移除栈顶元素
    s.pop();
    std::cout << "After popping, top element is: " << s.top() << std::endl;

    // 检查栈是否为空
    if (!s.empty()) {
        std::cout << "Stack is not empty." << std::endl;
    }

    // 打印栈的大小
    std::cout << "Size of stack: " << s.size() << std::endl;

    return 0;
}

Beispiel

Nachfolgend ein vollständiges Beispiel mit<stack>, einschließlich des Ausgabergebnisses:

Beispiel

#include <iostream>
#include <stack>

int main() {
    std::stack<int> s;

    // Elemente zum Stack hinzufügen
    s.push(10);
    s.push(20);
    s.push(30);

    // Gib das oberste Element des Stacks aus
    std::cout << "Oberstes Element ist: " << s.top() << std::endl; // Ausgabe: Oberstes Element ist: 30

    // Entferne das oberste Element des Stacks
    s.pop();
    std::cout << "Nach dem Poppen ist das oberste Element: " << s.top() << std::endl; // Ausgabe: Nach dem Poppen ist das oberste Element: 20

    // Überprüfen, ob der Stack leer ist
    if (!s.empty()) {
        std::cout << "Der Stack ist nicht leer." << std::endl; // Ausgabe: Der Stack ist nicht leer.
    }

    // Größe des Stacks ausgeben
    std::cout << "Größe des Stacks: " << s.size() << std::endl; // Ausgabe: Größe des Stacks: 2

    // Weiter Elemente entfernen
    s.pop();
    s.pop();

    // Überprüfen, ob der Stack leer ist
    if (s.empty()) {
        std::cout << "Der Stack ist leer." << std::endl; // Ausgabe: Der Stack ist leer.
    }

    return 0;
}

Ausgabeergebnis:

Top element is: 30
After popping, top element is: 20
Stack is not empty.
Size of stack: 2
Stack is empty.

Hinweise

  • <stack>Es bietet keine Methode für den direkten Zugriff auf Elemente im Stack; der Zugriff ist nur übertop()Zugriff auf das oberste Element des Stacks.
  • Der Versuch, auf einem leeren Stack aufzurufentop()oderpop()Führt zu undefiniertem Verhalten.
  • <stack>Der zugrunde liegende Container des Stacks kann jeder Sequenzcontainer sein, der Iteratoren mit wahlfreiem Zugriff unterstützt, wie z. B.vectoroderdeque。
Weitere Erweiterungen