std::stack
es un contenedor adaptador en C++ que proporciona una estructura de datos tipo pila (stack), permitiendo insertar y eliminar elementos en un orden LIFO (Last In, First Out). Es útil cuando se necesita gestionar datos de manera que el último en entrar sea el primero en salir, como en algoritmos de recorrido de árboles o control de llamadas.
std::stack
?
El contenedor std::stack
se implementa como un adaptador sobre otros contenedores como std::vector
, std::deque
o std::list
. Esto significa que std::stack
se construye usando uno de estos contenedores subyacentes, pero expone solo un subconjunto de sus operaciones para permitir el comportamiento LIFO. Los métodos principales son:
std::stack
en C++
#include <iostream>
#include <stack>
int main() {
std::stack<int> pila;
// Insertar elementos en la pila
pila.push(10);
pila.push(20);
pila.push(30);
std::cout << "Elemento superior: " << pila.top() << std::endl; // Output: 30
// Eliminar el elemento superior
pila.pop();
std::cout << "Elemento superior después de pop(): " << pila.top() << std::endl; // Output: 20
// Verificar el tamaño de la pila
std::cout << "Tamaño de la pila: " << pila.size() << std::endl; // Output: 2
return 0;
}
1. Uso con tipos de datos personalizados:
std::stack
no se limita a tipos de datos primitivos, también se puede usar con clases o estructuras definidas por el usuario, facilitando su uso en aplicaciones más complejas.
2. Recorrido inverso de un contenedor:
Se puede usar std::stack
para almacenar temporalmente elementos de otro contenedor, como std::vector
, y luego extraerlos en orden inverso.
Para más detalles sobre std::stack
, puedes consultar la documentación oficial en cppreference.
Jorge García
Fullstack developer