Biblioteca estándar de C++<stack>
En C++, la biblioteca estándar proporciona varios contenedores y algoritmos para ayudar a los desarrolladores a escribir programas de manera más eficiente.
<stack>Es parte de la Biblioteca de Plantillas Estándar de C++ (STL); implementa una estructura de datos de último en entrar, primero en salir (LIFO, Last In First Out). Esta estructura de datos es muy adecuada para escenarios en los que se necesita que "el último elemento agregado sea el primero en eliminarse".
<stack>El adaptador de contenedor proporciona una interfaz de pila, que se basa en otros contenedores (comodequeovector) para implementarse. Los elementos de la pila están dispuestos linealmente, pero solo se permiten operaciones de agregar y eliminar en un extremo (la cima de la pila).
Operaciones básicas
push(): Agrega un elemento en la cima de la pila.pop(): Elimina el elemento de la cima de la pila.top(): Devuelve una referencia al elemento de la cima de la pila, sin eliminarlo.empty(): Comprueba si la pila está vacía.size(): Devuelve el número de elementos en la pila.
Sintaxis
A continuación se muestra el uso de<stack>la sintaxis básica de:
#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;
}
Ejemplo
A continuación se muestra un uso de<stack>el ejemplo completo, incluido el resultado de salida:
Ejemplo
#include <stack>
int main() {
std::stack<int> s;
// Agregar un elemento a la pila
s.push(10);
s.push(20);
s.push(30);
// Imprimir el elemento superior de la pila
std::cout << "Top element is: " << s.top() << std::endl; // Salida: Top element is: 30
// Eliminar el elemento superior de la pila
s.pop();
std::cout << "After popping, top element is: " << s.top() << std::endl; // Salida: After popping, top element is: 20
// Verificar si la pila está vacía
if (!s.empty()) {
std::cout << "Stack is not empty." << std::endl; // Salida: Stack is not empty.
}
// Imprimir el tamaño de la pila
std::cout << "Size of stack: " << s.size() << std::endl; // Salida: Size of stack: 2
// Continuar eliminando elementos
s.pop();
s.pop();
// Verificar si la pila está vacía
if (s.empty()) {
std::cout << "Stack is empty." << std::endl; // Salida: Stack is empty.
}
return 0;
}
Resultado de salida:
Top element is: 30 After popping, top element is: 20 Stack is not empty. Size of stack: 2 Stack is empty.
Notas
<stack>No proporciona un método para acceder directamente a los elementos de la pila; solo a través detop()se puede acceder al elemento superior de la pila.- Intentar llamar a, en una pila vacía,
top()opop()resultará en un comportamiento indefinido. <stack>El contenedor subyacente puede ser cualquier contenedor secuencial que admita iteradores de acceso aleatorio, comovectorodeque。