Saltar al contenido

Apilar en C ++ STL con ejemplo

¿Qué es std :: stack?

Stack es una estructura de datos que funciona según la técnica LIFO (Last In First Out). Std :: permite que la pila agregue y elimine elementos de uno.

La clase std :: stack es un adaptador de contenedor. Los objetos contenedores de datos similares contienen datos. Puede crear acero a partir de diferentes contenedores de secuencia. Si no se proporciona un contenedor, se utilizará la etiqueta de contador de forma predeterminada. Los adaptadores de contenedores no admiten comedores, por lo que no se pueden utilizar para manipular datos.

En este tutorial de C ++, aprenderá

Sintaxis de la pila

Para crear un acero, necesitamos el archivo de encabezado incluido en nuestro código. Luego usamos esta sintaxis para definir std :: stack:


template <class Type, class Container = deque<Type> > class stack;

Tipos de miembros

Estos son los tipos de miembros apilados:

Operaciones en acero

El acero C ++ admite las siguientes operaciones básicas:

Implementación de pila

Paso 1) Tenemos acero vacío al principio. La parte superior apilada vacía se establece en -1.

Paso 2) A continuación, hemos introducido el elemento 5 en el acero. La parte superior del acero se centrará en el elemento 5.

Paso 3) A continuación, hemos introducido el elemento 50 en el acero. La parte superior del acero cambia y se enfoca en el elemento 50.

Paso 4) Luego realizamos una operación emergente, eliminando el elemento superior de la pila. El elemento 50 sale del acero. La parte superior del acero ahora se enfoca en el elemento 5.

empujar () y hacer estallar ()

Las funciones de apilamiento :: push () agregan un nuevo elemento a la parte superior de la pila. El tamaño de la pila aumenta en 1 después de la instalación. La función asume esta sintaxis:


stack.push(value)

El valor es el artículo que se insertará en el acero.

La función de pila :: pop () elimina el elemento superior del acero. Esto es lo más nuevo del acero. El tamaño de la pila se reduce en 1 después de la eliminación. Aquí está la sintaxis de la función:


stack.pop()

La función no toma parámetros.

Ejemplo 1:


#include <iostream> 
#include <stack> 
using namespace std;
int main() {
	stack<int> st;
	st.push(10);
	st.push(20);
	st.push(30);
	st.push(40);
	
         st.pop();
	st.pop();

	while (!st.empty()) {
		cout << ' ' << st.top();
		st.pop();
	}
}

Producción:

Aquí hay una imagen del código:

Explicación del Código:

  1. Incluya el archivo de encabezado de iostream en nuestro código para usar sus funciones.
  2. Incluya el archivo de encabezado apilado en nuestro código para usar sus funciones.
  3. Incluya el nombre de espacio estándar en nuestro código para usar sus clases sin llamarlo.
  4. Llame a la función principal (). A esta función se le debe agregar la lógica del programa.
  5. Cree st st para almacenar valores enteros.
  6. Utilice la función de empuje () para insertar el valor 10 en el acero.
  7. Utilice la función de empuje () para insertar el valor 20 en el acero.
  8. Utilice la función de empuje () para insertar el valor 30 en el acero.
  9. Utilice la función de empuje () para insertar el valor 40 en el acero.
  10. Utilice la función pop () para eliminar el elemento superior del acero, es decir, 40. El elemento superior ahora se hace 30.
  11. Utilice la función pop () para eliminar el elemento superior del acero, es decir, 30. El elemento superior ahora se hace 20.
  12. Use un ciclo de tiempo y una función vacía () para verificar si el acero está vacío. ¡Un! el operador NO lo es.
  13. Imprime el material actual del acero en la consola.
  14. Llame a la función pop () en la pila.
  15. El final del cuerpo del ciclo de tiempo.
  16. Fin del cuerpo funcional principal ().

vacío (), tamaño (), superior ()

Las pilas tienen funciones integradas que puedes usar para jugar con el acero y sus valores. Éstas incluyen:

Ejemplo 2:


#include <iostream> 
#include <stack>  
using namespace std;
void createStack(stack <int> mystack)
{
	stack <int> ms = mystack;
	while (!ms.empty())
	{
		cout << 't' << ms.top();
		ms.pop();
	}
	cout << 'n';
}
int main()
{
	stack <int> st;
	st.push(32);
	st.push(21);
	st.push(39);
	st.push(89);
	st.push(25);

	cout << "The stack st is: ";
	createStack(st);
	cout << "n st.size() : " << st.size();
	cout << "n st.top() : " << st.top();
	cout << "n st.pop() : ";
	st.pop();
	createStack(st);
	return 0;
}

Producción:

Aquí hay una imagen del código:

Explicación del Código:

  1. Incluya el archivo de encabezado de iostream en nuestro código para usar sus funciones.
  2. Incluya el archivo de encabezado apilado en nuestro código para usar sus funciones.
  3. Incluya el nombre de espacio estándar en nuestro programa para poder usar sus clases sin llamarlo.
  4. Cree la función createStack que podemos usar para crear el stock apilado. La pila tendrá una matriz de números enteros.
  5. El comienzo del cuerpo de la función createStack.
  6. Cree un ejemplo del tipo de datos mystack y asígnele el nombre ms.
  7. Utilice el ciclo de tiempo y la función vacía () para comprobar si el acero está vacío.
  8. El comienzo del cuerpo del bucle de tiempo.
  9. Utilice la función superior () almacenada en la parte superior de la pila. El personaje t creará una nueva pestaña.
  10. Utilice la función pop () para eliminar el elemento en la parte superior de la pila.
  11. El final del cuerpo del ciclo de tiempo.
  12. Imprime una línea blanca en la consola.
  13. El final del cuerpo de la función createStack.
  14. Llame a la función principal (). La lógica del programa debe agregarse dentro del cuerpo de la función principal ().
  15. El comienzo de la función principal del cuerpo ().
  16. Crea un objeto apilable st.
  17. Utilice la función de empuje () para insertar el elemento 32 en el acero.
  18. Utilice la función de empuje () para insertar el elemento 21 en el acero.
  19. Utilice la función de empuje () para insertar el elemento 39 en el acero.
  20. Utilice la función de empuje () para insertar el elemento 89 en el acero.
  21. Utilice la función de empuje () para insertar el elemento 25 en el acero.
  22. Imprime texto en la consola.
  23. Llame a la función createStack para completar las operaciones de inserción anteriores en la pila.
  24. Imprima el tamaño de la pila en la consola junto a otro texto.
  25. Imprima el elemento en la parte superior de la pila en la consola.
  26. Imprime texto en la consola.
  27. Destruye el elemento en la parte superior del acero. Luego devolverá los elementos restantes en el acero.
  28. Llame a la función createStack para completar las operaciones anteriores.
  29. El programa debe devolver valor una vez completado con éxito.
  30. El final del cuerpo de la función principal ().

emplace () y swap ()

Estas son otras funciones de apilamiento integradas:

Ejemplo 3:


#include <iostream>    
#include <stack>
#include <cstdlib>
using namespace std;
int main() {
	stack<int> st1;
	stack<int> st2;

	st1.emplace(12);
	st1.emplace(19);

	st2.emplace(20);
	st2.emplace(23);

	st1.swap(st2);

	cout << "st1 = ";
	while (!st1.empty()) {
		cout << st1.top() << " ";
		st1.pop();
	}

	cout << endl << "st2 = ";
	while (!st2.empty()) {
		cout << st2.top() << " ";
		st2.pop();
	}
}

Producción:

Aquí hay una imagen del código:

Explicación del Código:

  1. Incluya el archivo de encabezado de iostream en nuestro código para usar sus funciones.
  2. Incluya el archivo de encabezado apilado en nuestro código para usar sus funciones.
  3. Incluya el archivo de encabezado cstdlib en nuestro código para usar sus funciones.
  4. Incluya el nombre de espacio estándar en nuestro código para usar sus clases sin llamarlo.
  5. Llame a la función principal (). La lógica del programa se integrará en el cuerpo de esta función.
  6. Confirme las pilas llamadas st1 para almacenar valores enteros.
  7. Confirme las pilas llamadas st2 para almacenar valores enteros.
  8. Use la función emplace () para insertar el entero 12 en el acero llamado st1.
  9. Utilice la función emplace () para insertar el entero 19 en el acero llamado st1.
  10. Utilice la función emplace () para insertar el entero 20 en el acero llamado st2.
  11. Utilice la función emplace () para insertar el entero 23 en el acero llamado st2.
  12. Utilice la función de intercambio () para intercambiar el material de los dos aceros, st1 y st2. El material de la pila st1 debe moverse a la pila st2. El material de la pila st2 debe moverse a la pila st1.
  13. Imprime texto en la consola.
  14. Use la declaración de longitud y la función vacía () para verificar si el acero st1 está vacío.
  15. Imprima el contenido de la pila st1 en la consola. El «» espacio entre los elementos apilados mientras se imprime en la consola.
  16. Ejecute la función pop () en la pila st1 para eliminar el elemento superior.
  17. El final del cuerpo de la declaración de longitud.
  18. Imprime texto en la consola. El endl es una palabra clave de C ++ para la última línea. Mueve el cursor del mouse a la siguiente línea para comenzar a imprimir desde allí.
  19. Use la declaración de longitud y la función vacía () para verificar si el acero st2 está vacío.
  20. Imprima el contenido de la pila st2 en la consola. El «» espacio entre los elementos apilados mientras se imprime en la consola.
  21. Ejecute la función pop () en la pila st2 para eliminar el elemento superior.
  22. El final del cuerpo de la declaración de longitud.
  23. El final del cuerpo de la función principal ().

Apilar y STL

La STL (biblioteca de plantillas estándar) viene con clases de plantillas que proporcionan estructuras de datos comunes de C ++. Por lo tanto, el acero también se puede aplicar en STL. Simplemente incluimos esta biblioteca en nuestro código y la usamos para definir acero.


stack<T> st; 

La sintaxis anterior confirma una pila con elementos de tipo de datos T.

Ejemplo 3:


#include <iostream>      
#include <stack>
#include <cstdlib>
using namespace std;
int main() {
	stack<int> st;
	st.push(12);
	st.push(19);
	st.push(20);
	cout << st.top();   
	cout << st.size();  
}

Producción:

Aquí hay una imagen del código:

Explicación del Código:

  1. Incluya el archivo de encabezado de iostream en nuestro código para usar sus funciones.
  2. Incluya el archivo de encabezado apilado en nuestro código para usar sus funciones.
  3. Incluya el archivo de encabezado cstdlib en nuestro código para usar sus funciones.
  4. Incluya el nombre de espacio estándar en nuestro código para usar sus clases sin llamarlo.
  5. Llame a la función principal (). La lógica del programa debe agregarse dentro del cuerpo de esta función.
  6. Confirme la pila para almacenar datos enteros.
  7. Agregue el elemento 12 a la pila.
  8. Agregue el elemento 19 a la pila.
  9. Agrega el elemento 20 al acero.
  10. Imprima el elemento en la parte superior de la pila en la consola.
  11. Imprime el tamaño del acero en la consola.
  12. El final del cuerpo de la función principal ().

Resumen: