Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Classe
Uma classe do adaptador de contêiner de modelo que fornece uma restrição de funcionalidade que limita o acesso ao elemento mais recentemente adicionado a alguns tipos de contêiner subjacentes. A classe stack é usada quando é importante esclarecer que apenas as operações stack estão sendo executadas no contêiner.
Sintaxe
template <class Type, class Container= deque <Type>>
class stack
Parâmetros
Type
O tipo de dados do elemento a ser armazenado na stack.
Container
O tipo do contêiner subjacente usado para implementar a stack. O valor padrão é a classe deque<Type>.
Comentários
Os elementos da classe Type estipulados no primeiro parâmetro de modelo de um objeto de pilha são sinônimo de value_type e devem corresponder ao tipo de elemento na classe de contêiner subjacente Container estipulada pelo segundo parâmetro de modelo. O Type deve ser atribuível, para que seja possível copiar objetos desse tipo e atribuir valores a variáveis desse tipo.
As classes de contêiner subjacente adequadas para a pilha incluem as classes deque, list e vector ou qualquer outro contêiner de sequência que dê suporte às operações de back, push_back e pop_back. A classe de contêiner subjacente é encapsulada dentro do adaptador do contêiner, que expõe apenas o conjunto limitado de funções membro de contêiner de sequência como uma interface pública.
A igualdade dos objetos de stack será comparável somente se a igualdade dos elementos da classe Type for comparável, e serão comparáveis em menor-que somente se os elementos da classe Type forem comparáveis em menor-que.
A classe
stackdá suporte a uma estrutura de dados UEPS (último a entrar, primeiro a sair). Uma boa comparação é pensar em uma pilha de pratos. Os elementos (os pratos) podem inseridos, inspecionados ou removidos somente da parte superior da pilha, que é o último elemento no final do contêiner base. A restrição para acessar apenas o elemento superior é o motivo para usar a classestack.A classe
queuedá suporte a uma estrutura de dados PEPS (primeiro a entrar, primeiro a sair). Uma boa comparação é pensar em uma fila de banco. Os elementos (as pessoas) vão sendo adicionados na parte final da fila e são removidos do início dela. Tanto o início quanto o final da fila podem ser inspecionados. A restrição de acessar apenas os elementos inicial e final dessa maneira é o motivo para usar a classequeue.A classe
priority_queueordena seus elementos para que o elemento maior sempre esteja na posição superior. Ele dá suporte à inserção de um elemento e a inspeção e remoção do elemento superior. Uma boa comparação é pensar em pessoas em fila organizadas por idade, altura ou algum outro critério.
Membros
Construtores
| Nome | Descrição |
|---|---|
stack |
Constrói um stack que é vazio ou que é uma cópia de um objeto de contêiner base. |
Typedefs
| Nome | Descrição |
|---|---|
container_type |
Um tipo que fornece o contêiner base para ser adaptado por um stack. |
size_type |
Um tipo de inteiro sem sinal que pode representar o número de elementos em um stack. |
value_type |
Um tipo que representa o tipo de objeto armazenado como um elemento em um stack. |
Funções
| Nome | Descrição |
|---|---|
empty |
Testa se stack está vazio. |
pop |
Remove o elemento da parte superior do stack. |
push |
Adiciona um elemento ao topo do stack. |
size |
Retorna o número de elementos no stack. |
top |
Retorna uma referência a um elemento na parte superior do stack. |
container_type
Um tipo que fornece o contêiner base a ser adaptado.
typedef Container container_type;
Comentários
O tipo é um sinônimo do parâmetro de modeloContainer. As três classes de contêiner da sequência da Biblioteca Padrão C++, vector, list e a classe deque padrão, atendem aos requisitos para serem usadas como o contêiner base para um objeto stack. Tipos definidos pelo usuário que satisfazem esses requisitos também podem ser usados.
Para obter mais informações sobre Container, consulte a seção Comentários do tópico stackClasse .
Exemplo
Veja o exemplo de stack::stack que demonstra como declarar e usar container_type.
empty
Testa se uma stack está vazia.
bool empty() const;
Valor de retorno
true se a pilha estiver vazia; false se a pilha não estiver vazia.
Exemplo
// 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.
pop
Remove o elemento da parte superior da stack.
void pop();
Comentários
A stack não pode estar vazia para que seja possível aplicar a função membro. O início da stack é a posição ocupada pelo elemento adicionado mais recentemente e é o último elemento no fim do contêiner.
Exemplo
// 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.
push
Adiciona um elemento ao topo da pilha.
void push(const Type& val);
Parâmetros
val
O elemento adicionado à parte superior da stack.
Comentários
O início da stack é a posição ocupada pelo elemento adicionado mais recentemente e é o último elemento no fim do contêiner.
Exemplo
// 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.
size
Retorna o número de elementos na stack.
size_type size() const;
Valor de retorno
O comprimento atual da stack.
Exemplo
// 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.
size_type
Um tipo de inteiro sem sinal que pode representar o número de elementos em uma stack.
typedef typename Container::size_type size_type;
Comentários
O tipo é um sinônimo de size_type do contêiner base adaptado pela stack.
Exemplo
Veja o exemplo de size que demonstra como declarar e usar size_type.
stack
Constrói uma stack que é vazia ou que é uma cópia de uma classe de contêiner base.
stack();
explicit stack(const container_type& right);
Parâmetros
right
O contêiner do qual a stack construída será uma cópia.
Exemplo
// 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.
top
Retorna uma referência a um elemento na parte superior da stack.
reference top();
const_reference top() const;
Valor de retorno
Uma referência ao último elemento no contêiner na parte superior da stack.
Comentários
A stack não pode estar vazia para que seja possível aplicar a função membro. O início da stack é a posição ocupada pelo elemento adicionado mais recentemente e é o último elemento no fim do contêiner.
Se o valor retornado de top for atribuído a const_reference, o objeto stack não poderá ser modificado. Se o valor retornado de top for atribuído a um reference, o objeto stack poderá ser modificado.
Exemplo
// 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.
value_type
Um tipo que representa o tipo de objeto armazenado como um elemento em uma stack.
typedef typename Container::value_type value_type;
Comentários
O tipo é um sinônimo de value_type do contêiner base adaptado pela stack.
Exemplo
// 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.
Confira também
Acesso Thread-Safe na Biblioteca Padrão C++
Referência da biblioteca padrão C++