Explicación detallada de la pila C++ STL (último en entrar, primero en salir)

Parte I Atención

inserte la descripción de la imagen aquí

  • stack<T>Los datos del adaptador del contenedor están LIFOorganizados de una manera (último en entrar, primero en salir), que se puede imaginar como una pila de platos en la mesa del comedor.
  • el archivo de encabezado debe ser incluido#include <stack>

Parte II Función

Comparado con otros contenedores de secuencias, stackes un contenedor con un mecanismo de almacenamiento simple y menos operaciones. Como se muestra en la figura a continuación, el objeto de pila solo tiene 7 funciones.
inserte la descripción de la imagen aquí
El siguiente es stackun conjunto completo de operaciones que un contenedor puede proporcionar:

Nombre de la función significado
top() Devuelve una referencia al elemento superior de la pila, de tipo T&. Si la pila está vacía, el valor devuelto no está definido.
push(const T& obj) Se puede colocar una copia del objeto en la parte superior de la pila. push_back()Esto se hace llamando a funciones del contenedor subyacente .
push(T&& obj) Empuja un objeto a la parte superior de la pila moviéndolo. push_back()Esto se hace llamando a la función del contenedor subyacente que toma un parámetro de referencia rvalue .
pop() Extrae el elemento superior de la pila sin devolver ningún valor.
size() Devuelve el número de elementos en la pila.
empty() Devuelve verdadero si no hay elementos en la pila.
emplace() Llame al constructor con los parámetros pasados ​​para generar un objeto en la parte superior de la pila. Similar a push(), llame al constructor una vez menos que
swap(stack<T> & other_stack) Intercambia los elementos de la pila actual con los elementos del argumento. El tipo de elementos contenidos en el parámetro debe ser el mismo que el de la pila actual. Hay una función global especial swap()disponible para objetos de pila.

Parte III Código

El código completo es el siguiente:

#include <iostream>
#include <iomanip>
#include <stack>

using namespace std;

int main()
{
    
    
    int tmp=0;
    stack<int> stk({
    
    0,1,2,3});  // stack<int> stk;
    stack<int> stk1({
    
    0,1,2,3}); 
    cout<<stk.top()<<endl;
    stk.pop();
    stk.push(4);
    stk.emplace(5);
    cout<<stk.size()<<setw(3)<<stk.top()<<endl;
    stk.swap(stk1);
    cout<<stk.size()<<setw(3)<<stk.top()<<endl;
    getchar();
    return 0;
}

Debido a que la operación es relativamente simple, no se da ninguna explicación aquí. Aquí está la salida:

3
5  5
4  3

Supongo que te gusta

Origin blog.csdn.net/Gou_Hailong/article/details/128381770
Recomendado
Clasificación