Entenda como std::stack funciona em C++

Para incrementar seu código com ferramentas adequadas!


Entenda como std::stack funciona em C++


A std::stack é uma classe da biblioteca de contêineres(que há várias classes) implementada como template .

Em inglês stack significa: pilha, e é justamente isso que ela faz ela armazena os dados de forma empilhados .

Ou seja, uma pilha tem a estrutura de dados LIFO(Last-In, First-Out), em português: “o último à entrar será o primeiro a sair”.

Uma pilha é diferente de uma lista, a pilha tem a ideia conforme uma “pilha de pratos”, se você EMPILHAR os pratos e tentar tirar o primeiro(que está no final da pilha, lá em baixo!), todos os de cima caem! Na lista não, você pode tirar de qualquer posição dependendo do subconjunto do tipo de lista que você criar na estruturação dos dados .

Logo, na pilha, você só pode remover o último elemento que você adicionou.

Algumas funções membro da std::stack são similares ou implementadas a partir de outras classes da biblioteca Conteiners, tais como:

  • push()
  • pop()
  • empty()

E entre outras.

Vamos ver como utilizá-las!


Utilização e implementação

Para utilizar a std::stack você precisa primeiramente adicionar a biblioteca <stack>:

#include <stack>

Declare a stack:

std::stack<int> pilha;

Adicione itens/elementos à stack:

pilha.push( 2 );
pilha.push( 4 );
pilha.push( 12 );

Saber quem está no topo da pilha, o último a ser adicionado:

std::cout << pilha.top() << '\n';

Para deletar o último elemento(o do topo)

pilha.pop();
std::cout << pilha.top() << '\n';

Verificar se está vazia, remover e imprimir:

while( true ){
  if( !pilha.empty() ){
    std::cout << pilha.top() << '\n';
    pilha.pop();
  }else{
    std::cout << "A pilha está vazia!" << '\n';
    break;
  }
}

O código completo:

#include <iostream>
#include <stack> 

int main( int argc , char **argv ){
  std::stack<int> pilha;

  pilha.push( 2 );
  pilha.push( 4 );
  pilha.push( 12 );

  pilha.pop();
  std::cout << pilha.top() << '\n';

  pilha.push( 11 );
  pilha.push( 13 );
  pilha.push( 17 );
  pilha.push( 8 );

  while( true ){
    if( !pilha.empty() ){
      std::cout << pilha.top() << '\n';
      pilha.pop();
    }else{
      std::cout << "A pilha está vazia!" << '\n';
      break;
    }
  }

  return 0;
}

Para mais dicas informações sobre std::stack acesse aqui .


cpp cppdaily


Compartilhe


Nosso canal no Youtube

Inscreva-se


Marcos Oliveira

Marcos Oliveira

Desenvolvedor de software
https://github.com/terroo


Crie Aplicativos Gráficos para Linux e Windows com C++

Aprenda C++ Moderno e crie Games, Programas CLI, GUI e TUI de forma fácil.

Saiba Mais

Receba as novidades no seu e-mail!

Após cadastro e confirmação do e-mail, enviaremos semanalmente resumos e também sempre que houver novidades por aqui para que você mantenha-se atualizado!