stack (Clase)

 

Para obtener la documentación más reciente de Visual Studio 2017 RC, consulte Documentación de Visual Studio 2017 RC.

Clase de adaptador de contenedor de plantilla que proporciona una restricción de la funcionalidad que limita el acceso al elemento agregado más recientemente a algún tipo de contenedor subyacente. La clase de pila se usa cuando es importante tener claro que solo se están realizando operaciones de pila en el contenedor.

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

Parámetros

ype
Tipo de datos de los elementos que se van a almacenar en la pila.

Container
Tipo del contenedor subyacente que se usa para implementar la pila. El valor predeterminado es la clase deque< tipo>.

Los elementos de la clase tipo estipulado en la primera plantilla son sinónimos de parámetro de un objeto de pila value_type y debe coincidir con el tipo de elemento de la clase de contenedor subyacente contenedor estipulado por el segundo parámetro de plantilla. El tipo debe ser asignable, por lo que es posible copiar objetos de ese tipo y para asignar valores a variables de ese tipo.

Incluyen clases de contenedor subyacente adecuadas para la pila deque, list (clase), y vector, clase, o cualquier otro contenedor de secuencia que admite las operaciones de volver, push_back, y pop_back. La clase de contenedor subyacente se encapsula dentro del adaptador de contenedor, que solo expone el conjunto limitado de las funciones miembro de contenedor de secuencias como una interfaz pública.

La pila de objetos son igualdad comparable si y solo si los elementos de la clase tipo son comparables igualdad y menor-que comparable si y solo si los elementos de la clase tipo son menores-que comparable.

  • La clase de pila es compatible con una estructura de datos LIFO (el último en entrar es el primero en salir). Un buen símil sería una pila de platos. Solo se pueden insertar e inspeccionar elementos (platos) en la parte superior de la pila, que es el último elemento al final del contenedor base, y solo se pueden quitar de ahí. La restricción de acceder únicamente al elemento superior es el motivo por el que se usa la clase stack.

  • El queue clase admite una estructura de datos, primero en salir (FIFO). Un buen símil sería el de personas que hacen cola en un banco. Se pueden agregar elementos (personas) a la parte posterior de la línea y quitarlos de la parte delantera de la línea. Se puede inspeccionar tanto la parte delantera como trasera de una línea. La restricción de acceder únicamente a los elementos delanteros y traseros de esta manera es el motivo por el que se usa la clase queue.

  • El priority_queue (clase) ordena sus elementos para que siempre es el elemento más grande en la parte superior. Admite la inserción de un elemento y la inspección y eliminación del elemento superior. Un buen símil sería el de personas alineadas y organizadas por edad, altura o cualquier otro criterio.

Constructores

pilaConstruye una stack que está vacía o que es una copia de un objeto contenedor base.

Typedefs

container_typeTipo que proporciona el contenedor base que debe adaptarse mediante una stack.
size_typeTipo entero sin signo que puede representar el número de elementos de un stack.
value_typeTipo que representa el tipo de objeto almacenado como elemento en una stack.

Funciones miembro

vacíaComprueba si la stack está vacía.
POPQuita el elemento de la parte superior de la stack.
inserciónAgrega un elemento a la parte superior de la stack.
tamañoDevuelve el número de elementos de stack.
ArribaDevuelve una referencia a un elemento en la parte superior de la stack.

Encabezado: < pila>

Espacio de nombres: std

Un tipo que proporciona el contenedor base debe adaptarse.

typedef Container container_type;  

Comentarios

El tipo es un sinónimo del parámetro de plantilla Container. Las tres clases de contenedor STL secuencia: la clase vector, clase de lista y deque de clase predeterminado, cumplir los requisitos que se usará como el contenedor base para un objeto de la pila. También pueden utilizarse tipos definidos por el usuario que cumpla estos requisitos.

Para obtener más información sobre Container, vea la sección Comentarios de la stack (clase) tema.

Ejemplo

Vea el ejemplo de Stack:: Stack para obtener un ejemplo de cómo declarar y utilizar container_type.

Comprueba si una pila está vacía.

bool empty() const;

Valor devuelto

True Si la pila está vacía; false Si la pila está vacía.

Ejemplo

// stack_empty.cpp  
// compile with: /EHsc  
#include <stack>  
#include <iostream>  
  
int main( )  
{  
   using namespace std;  
   // Declares stacks with default deque base container  
   stack <int> s1, s2;  
  
   s1.push( 1 );  
  
   if ( s1.empty( ) )  
      cout << "The stack s1 is empty." << endl;  
   else  
      cout << "The stack s1 is not empty." << endl;  
  
   if ( s2.empty( ) )  
      cout << "The stack s2 is empty." << endl;  
   else  
      cout << "The stack s2 is not empty." << endl;  
}  

The stack s1 is not empty.  
The stack s2 is empty.  

Quita el elemento de la parte superior de la pila.

void pop();

Comentarios

La pila no debe estar vacía para aplicar la función miembro. La parte superior de la pila es la posición ocupada por el elemento agregado más recientemente y el último elemento al final del contenedor.

Ejemplo

// stack_pop.cpp  
// compile with: /EHsc  
#include <stack>  
#include <iostream>  
  
int main( )  
{  
   using namespace std;  
   stack <int> s1, s2;  
  
   s1.push( 10 );  
   s1.push( 20 );  
   s1.push( 30 );  
  
   stack <int>::size_type i;  
   i = s1.size( );  
   cout << "The stack length is " << i << "." << endl;  
  
   i = s1.top( );  
   cout << "The element at the top of the stack is "  
        << i << "." << endl;  
  
   s1.pop( );  
  
   i = s1.size( );  
   cout << "After a pop, the stack length is "   
        << i << "." << endl;  
  
   i = s1.top( );  
   cout << "After a pop, the element at the top of the stack is "  
        << i << "." << endl;  
}  

The stack length is 3.  
The element at the top of the stack is 30.  
After a pop, the stack length is 2.  
After a pop, the element at the top of the stack is 20.  

Agrega un elemento al extremo superior de la pila.

void push(const Type& val);

Parámetros

val
El elemento agregado a la parte superior de la pila.

Comentarios

La parte superior de la pila es la posición ocupada por el elemento agregado más recientemente y el último elemento al final del contenedor.

Ejemplo

// stack_push.cpp  
// compile with: /EHsc  
#include <stack>  
#include <iostream>  
  
int main( )  
{  
   using namespace std;  
   stack <int> s1;  
  
   s1.push( 10 );  
   s1.push( 20 );  
   s1.push( 30 );  
  
   stack <int>::size_type i;  
   i = s1.size( );  
   cout << "The stack length is " << i << "." << endl;  
  
   i = s1.top( );  
   cout << "The element at the top of the stack is "  
        << i << "." << endl;  
}  

The stack length is 3.  
The element at the top of the stack is 30.  

Devuelve el número de elementos en la pila.

size_type size() const;

Valor devuelto

La longitud actual de la pila.

Ejemplo

// stack_size.cpp  
// compile with: /EHsc  
#include <stack>  
#include <iostream>  
  
int main( )  
{  
   using namespace std;  
   stack <int> s1, s2;  
   stack <int>::size_type i;  
  
   s1.push( 1 );  
   i = s1.size( );  
   cout << "The stack length is " << i << "." << endl;  
  
   s1.push( 2 );  
   i = s1.size( );  
   cout << "The stack length is now " << i << "." << endl;  
}  

The stack length is 1.  
The stack length is now 2.  

Un tipo de entero sin signo que puede representar el número de elementos de una pila.

typedef typename Container::size_type size_type;  

Comentarios

El tipo es un sinónimo de size_type del contenedor base adaptado la pila.

Ejemplo

Vea el ejemplo de tamaño para obtener un ejemplo de cómo declarar y utilizar size_type.

Construye una pila que está vacío o que es una copia de una clase de contenedor base.

stack();

explicit stack(const container_type& right);

Parámetros

right
El contenedor del que la pila construida es a ser una copia.

Ejemplo

// stack_stack.cpp  
// compile with: /EHsc  
#include <stack>  
#include <vector>  
#include <list>  
#include <iostream>  
  
int main( )  
{  
   using namespace std;  
  
   // Declares stack with default deque base container  
   stack <char> dsc1;  
  
   //Explicitly declares a stack with deque base container  
   stack <char, deque<char> > dsc2;  
  
   // Declares a stack with vector base containers  
   stack <int, vector<int> > vsi1;  
  
   // Declares a stack with list base container  
   stack <int, list<int> > lsi;  
  
   // The second member function copies elements from a container  
   vector<int> v1;  
   v1.push_back( 1 );  
   stack <int, vector<int> > vsi2( v1 );  
   cout << "The element at the top of stack vsi2 is "  
        << vsi2.top( ) << "." << endl;  
}  

The element at the top of stack vsi2 is 1.  

Devuelve una referencia a un elemento en la parte superior de la pila.

reference top();

const_reference top() const;

Valor devuelto

Una referencia al último elemento del contenedor en la parte superior de la pila.

Comentarios

La pila no debe estar vacía para aplicar la función miembro. La parte superior de la pila es la posición ocupada por el elemento agregado más recientemente y el último elemento al final del contenedor.

Si el valor devuelto de superior se asigna a un const_reference, no se puede modificar el objeto de pila. Si el valor devuelto de superior se asigna a un referencia, se puede modificar el objeto de pila.

Ejemplo

// stack_top.cpp  
// compile with: /EHsc  
#include <stack>  
#include <iostream>  
  
int main( )  
{  
   using namespace std;  
   stack <int> s1;  
  
   s1.push( 1 );  
   s1.push( 2 );  
  
   int& i = s1.top( );  
   const int& ii = s1.top( );  
  
   cout << "The top integer of the stack s1 is "  
        << i << "." << endl;  
   i--;  
   cout << "The next integer down is "<< ii << "." << endl;  
}  

The top integer of the stack s1 is 2.  
The next integer down is 1.  

Tipo que representa el tipo de objeto almacenado como un elemento en una pila.

typedef typename Container::value_type value_type;  

Comentarios

El tipo es un sinónimo de value_type del contenedor base adaptado la pila.

Ejemplo

// stack_value_type.cpp  
// compile with: /EHsc  
#include <stack>  
#include <iostream>  
  
int main( )  
{  
   using namespace std;  
   // Declares stacks with default deque base container  
   stack<int>::value_type AnInt;  
  
   AnInt = 69;  
   cout << "The value_type is AnInt = " << AnInt << endl;  
  
   stack<int> s1;  
   s1.push( AnInt );  
   cout << "The element at the top of the stack is "  
        << s1.top( ) << "." << endl;  
}  

The value_type is AnInt = 69  
The element at the top of the stack is 69.  

Seguridad para subprocesos en la biblioteca estándar de C++
Biblioteca de plantillas estándar

Mostrar: