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 <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 aufzurufen
top()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。