Empilhar C++ STL com exemplo
โก Resumo Inteligente
Empilhar C++ A STL implementa um adaptador de contรชiner LIFO que adiciona e remove elementos de uma รบnica extremidade, envolvendo-os.ping um contรชiner de sequรชncia subjacente, como deque, vetor ou lista, para gerenciar dados ordenados.

O que รฉ std::stack?
Uma pilha รฉ uma estrutura de dados que opera com base na tรฉcnica LIFO (Last In First Out). O std::stack permite que elementos sejam adicionados e removidos apenas de uma extremidade.
A classe `std::stack` รฉ um adaptador de contรชiner. Objetos contรชiner armazenam dados de um mesmo tipo. Vocรช pode criar uma pilha a partir de vรกrios contรชineres de sequรชncia. Se nenhum contรชiner for fornecido, o contรชiner `deque` serรก usado por padrรฃo. Adaptadores de contรชiner nรฃo suportam iteradores, portanto, nรฃo podem ser usados โโpara manipular dados.
Sintaxe de pilha
Para criar uma pilha, devemos incluir o arquivo de cabeรงalho em nosso cรณdigo. Em seguida, usamos esta sintaxe para definir std::stack:
template <class Type, class Container = deque<Type> > class stack;
- Formato โ รฉ o tipo de elemento contido em std::stack. Pode ser qualquer vรกlido C++ tipo ou atรฉ mesmo um tipo definido pelo usuรกrio.
- Recipiente โ รฉ o tipo do objeto contรชiner subjacente.
Tipos de membros
Aqui estรฃo os tipos de membros da pilha:
- tipo_de_valorโ O primeiro parรขmetro do modelo, T. Ele denota os tipos de elementos.
- tipo_de_containerโ O segundo parรขmetro do modelo, Container. Ele indica o tipo de contรชiner subjacente.
- tipo_de_tamanhoโ Tipo inteiro sem sinal.
Operaรงรตes na pilha
A C++ stack suporta as seguintes operaรงรตes bรกsicas:
- empurrar โ Adiciona/empurra um item para a pilha.
- estouro โ Remove um item da pilha.
- espreitar โ Retorna o item do topo da pilha sem removรช-lo.
- estรก cheio โ Verifica se uma pilha estรก cheia.
- estรก vazia โ Verifica se uma pilha estรก vazia.
Implementaรงรฃo de pilha
Os passos a seguir mostram como o topo da pilha se desloca ร medida que os itens sรฃo adicionados e removidos:
Passo 1) Inicialmente, temos uma pilha vazia. O topo de uma pilha vazia รฉ definido como -1.
Passo 2) Em seguida, inserimos o elemento 5 na pilha. O topo da pilha apontarรก para o elemento 5.
Passo 3) Em seguida, inserimos o elemento 50 na pilha. O topo da pilha se desloca e aponta para o elemento 50.
Passo 4) Em seguida, realizamos uma operaรงรฃo de despojo, removendo o elemento do topo da pilha. O elemento 50 foi despojado da pilha. O topo da pilha agora aponta para o elemento 5.
push() e pop()
A funรงรฃo `stack::push()` adiciona um novo item ao topo da pilha. O tamanho da pilha รฉ incrementado em 1 apรณs a inserรงรฃo. A funรงรฃo aceita a seguinte sintaxe:
stack.push(value)
O valor รฉ o item a ser inserido na pilha.
A funรงรฃo `stack::pop()` remove o elemento do topo da pilha. Este รฉ o item mais recente da pilha. O tamanho da pilha รฉ reduzido em 1 apรณs a remoรงรฃo. Aqui estรก a sintaxe da funรงรฃo:
stack.pop()
A funรงรฃo nรฃo aceita parรขmetros.
1 exemplo:
#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(); } }
Saรญda:
Aqui estรก uma captura de tela do cรณdigo:
Code Explicaรงรฃo:
- Inclua o arquivo de cabeรงalho iostream em nosso cรณdigo para usar suas funรงรตes.
- Inclua o arquivo de cabeรงalho da pilha em nosso cรณdigo para usar suas funรงรตes.
- Inclua o namespace std em nosso cรณdigo para usar suas classes sem chamรก-lo.
- Chame a funรงรฃo main(). A lรณgica do programa deve ser adicionada nesta funรงรฃo.
- Crie uma pilha st para armazenar valores inteiros.
- Use a funรงรฃo push() para inserir o valor 10 na pilha.
- Use a funรงรฃo push() para inserir o valor 20 na pilha.
- Use a funรงรฃo push() para inserir o valor 30 na pilha.
- Use a funรงรฃo push() para inserir o valor 40 na pilha.
- Use a funรงรฃo pop() para remover o elemento superior da pilha, ou seja, 40. O elemento superior agora se torna 30.
- Use a funรงรฃo pop() para remover o elemento superior da pilha, ou seja, 30. O elemento superior agora se torna 20.
- Use um loop while e uma funรงรฃo vazia() para verificar se a pilha NรO estรก vazia. O ! รฉ o operador NOT.
- Imprimindo o conteรบdo atual da pilha no console.
- Chame a funรงรฃo pop() na pilha.
- Fim do corpo do loop while.
- Fim do corpo da funรงรฃo main().
vazio(), tamanho(), topo()
As pilhas possuem funรงรตes integradas que vocรช pode usar para brincar com a pilha e seus valores. Esses incluem:
- vazio()โ verifica se uma pilha estรก vazia ou nรฃo.
- Tamanho()โ retorna o tamanho da pilha, ou seja, o nรบmero de elementos em uma pilha.
- topo()โ Acessa o elemento da pilha no topo.
2 exemplo:
#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; }
Saรญda:
Aqui estรก uma captura de tela do cรณdigo:
Code Explicaรงรฃo:
- Inclua o arquivo de cabeรงalho iostream em nosso cรณdigo para usar suas funรงรตes.
- Inclua o arquivo de cabeรงalho da pilha em nosso cรณdigo para usar suas funรงรตes.
- Inclua o namespace std em nosso programa para usar suas classes sem chamรก-lo.
- Crie a funรงรฃo createStack que podemos usar para criar a pilha mystack. A pilha conterรก um conjunto de inteiros.
- O inรญcio do corpo da funรงรฃo createStack.
- Crie uma instรขncia do tipo de dados mystack e dรช a ela o nome ms.
- Use o loop while e a funรงรฃo vazia() para verificar se a pilha estรก vazia.
- O inรญcio do corpo do loop while.
- Use a funรงรฃo top() armazenada no topo da pilha. O caractere \t criarรก uma nova aba.
- Use a funรงรฃo pop() para excluir o elemento no topo da pilha.
- Fim do corpo do loop while.
- Imprima uma linha em branco no console.
- Fim do corpo da funรงรฃo createStack.
- Chame a funรงรฃo main(). A lรณgica do programa deve ser adicionada ao corpo da funรงรฃo main().
- O inรญcio do corpo da funรงรฃo main().
- Crie um objeto de pilha st.
- Use a funรงรฃo push() para inserir o elemento 32 na pilha.
- Use a funรงรฃo push() para inserir o elemento 21 na pilha.
- Use a funรงรฃo push() para inserir o elemento 39 na pilha.
- Use a funรงรฃo push() para inserir o elemento 89 na pilha.
- Use a funรงรฃo push() para inserir o elemento 25 na pilha.
- Imprima algum texto no console.
- Chame a funรงรฃo createStack para executar as operaรงรตes de inserรงรฃo acima na pilha.
- Imprima o tamanho da pilha no console junto com outro texto.
- Imprima o elemento no topo da pilha no console.
- Imprima algum texto no console.
- Exclua o elemento no topo da pilha. Em seguida, ele retornarรก os elementos restantes na pilha.
- Chame a funรงรฃo createStack para executar as operaรงรตes acima.
- O programa deve retornar o valor apรณs a conclusรฃo bem-sucedida.
- Fim do corpo da funรงรฃo main().
emplace() e swap()
Estas sรฃo outras funรงรตes de pilha integradas:
- emplace()โ Constrรณi e, em seguida, insere um novo elemento no topo da pilha.
- trocar()โ troca o conteรบdo de uma pilha com o conteรบdo de outra pilha.
3 exemplo:
#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(); } }
Saรญda:
Aqui estรก uma captura de tela do cรณdigo:
Code Explicaรงรฃo:
- Inclua o arquivo de cabeรงalho iostream em nosso cรณdigo para usar suas funรงรตes.
- Inclua o arquivo de cabeรงalho da pilha em nosso cรณdigo para usar suas funรงรตes.
- Inclua o arquivo de cabeรงalho cstdlib em nosso cรณdigo para usar suas funรงรตes.
- Inclua o namespace std em nosso cรณdigo para usar suas classes sem chamรก-lo.
- Chame a funรงรฃo main(). A lรณgica do programa serรก adicionada ao corpo desta funรงรฃo.
- Declare uma pilha chamada st1 para armazenar valores inteiros.
- Declare uma pilha chamada st2 para armazenar valores inteiros.
- Use a funรงรฃo emplace() para inserir o inteiro 12 na pilha chamada st1.
- Use a funรงรฃo emplace() para inserir o inteiro 19 na pilha chamada st1.
- Use a funรงรฃo emplace() para inserir o inteiro 20 na pilha chamada st2.
- Use a funรงรฃo emplace() para inserir o inteiro 23 na pilha chamada st2.
- Use a funรงรฃo swap() para trocar o conteรบdo das duas pilhas, st1 e st2. O conteรบdo da pilha st1 deve ser movido para a pilha st2. O conteรบdo da pilha st2 deve ser movido para a pilha st1.
- Imprima algum texto no console.
- Use a instruรงรฃo while e a funรงรฃo vazia() para verificar se a pilha st1 nรฃo estรก vazia.
- Imprima o conteรบdo da pilha st1 no console. O โ โ adiciona espaรงo entre os elementos da pilha ao imprimi-los no console.
- Execute a funรงรฃo pop() na pilha st1 para remover o elemento superior.
- Fim do corpo da instruรงรฃo while.
- Imprima algum texto no console. O final รฉ um C++ palavra-chave para a linha final. Ele move o cursor do mouse para a prรณxima linha para comeรงar a imprimir a partir daรญ.
- Use a instruรงรฃo while e a funรงรฃo vazia() para verificar se a pilha st2 nรฃo estรก vazia.
- Imprima o conteรบdo da pilha st2 no console. O โ โ adiciona espaรงo entre os elementos da pilha ao imprimi-los no console.
- Execute a funรงรฃo pop() na pilha st2 para remover o elemento superior.
- Fim do corpo da instruรงรฃo while.
- Fim do corpo da funรงรฃo main().
Pilha em STL
A STL (Standard Template Library) vem com classes de modelo que fornecem C++ estruturas de dados. Portanto, uma pilha tambรฉm pode ser implementada em STL. Simplesmente incluรญmos esta biblioteca em nosso cรณdigo e a usamos para definir uma pilha.
stack<T> st;
A sintaxe acima declara uma pilha st para elementos do tipo de dados T.
4 exemplo:
#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(); }
Saรญda:
Aqui estรก uma captura de tela do cรณdigo:
Code Explicaรงรฃo:
- Inclua o arquivo de cabeรงalho iostream em nosso cรณdigo para usar suas funรงรตes.
- Inclua o arquivo de cabeรงalho da pilha em nosso cรณdigo para usar suas funรงรตes.
- Inclua o arquivo de cabeรงalho cstdlib em nosso cรณdigo para usar suas funรงรตes.
- Inclua o namespace std em nosso cรณdigo para usar suas classes sem chamรก-lo.
- Chame a funรงรฃo main(). A lรณgica do programa deve ser adicionada ao corpo desta funรงรฃo.
- Declare uma pilha st para armazenar dados inteiros.
- Adicione o elemento 12 ร pilha.
- Adicione o elemento 19 ร pilha.
- Adicione o elemento 20 ร pilha.
- Imprima o elemento no topo da pilha no console.
- Imprima o tamanho da pilha no console.
- Fim do corpo da funรงรฃo main().






