English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

C++ Tutorial Básico

C++ Controle de fluxo

C++ Função

C++ Array & cadeia de caracteres

C++ Estrutura de dados

C++ Classe & objeto

C++ Ponteiros

C++ Herança

C++ Tutorial STL

C++ Manual de referência

C++ Stack (pilha)

No campo da ciência da computação, nos dedicamos a vários programas. Cada um deles tem seu próprio domínio e utilidade. De acordo com o propósito da criação do programa e o ambiente, temos uma grande variedade de estruturas de dados disponíveis. Uma delas é 'pilha'. Antes de discutir esse tipo de dados, vamos olhar para sua sintaxe.

Sintaxe

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

Esta estrutura de dados utiliza a técnica LIFO, onde LIFO significa 'último a entrar, primeiro a sair'. O elemento inserido primeiro será extraído no final, e assim por diante. Há um elemento chamado 'topo', que é o elemento localizado na posição mais alta. Todas as operações de inserção e exclusão são realizadas no elemento superior da pilha.

A pilha implícita na área de aplicação é um adaptador de contêiner.

O contêiner deve suportar a lista de operações a seguir:

  • empty

  • size

  • back

  • push_back

  • pop_back

Parâmetro de template

TO parâmetro especifica o tipo de elemento que o adaptador de contêiner manterá.

ContainerO parâmetro especifica o objeto interno do contêiner que contém os elementos da pilha.

Tipo membro

A seguir está uma lista dos tipos de membros da pilha, seguidos de uma breve descrição.

Tipo membroDescrição
value_typeEspecifica o tipo do elemento.
container_typeEspecifica o tipo de contêiner básico.
size_typeEspecifica o intervalo de tamanho do elemento.

Função

Através das funções, podem ser usados ou incorporados objetos ou variáveis na área de programação. A pilha oferece muitas funções que podem ser usadas ou incorporadas em programas. A lista a seguir é semelhante:

FunçãoDescrição
(construtor)Esta função é usada para construir o contêiner da pilha.
emptyEsta função é usada para testar se a pilha está vazia. Se a pilha estiver vazia, esta função retorna true, caso contrário, retorna false.
sizeEsta função retorna o tamanho do contêiner da pilha, que é a medida do número de elementos armazenados na pilha.
topEsta função é usada para acessar o elemento no topo da pilha. Este elemento desempenha um papel muito importante, pois todas as operações de inserção e exclusão são executadas no elemento no topo.
pushEsta função é usada para inserir um novo elemento no topo da pilha.
popEsta função é usada para remover elementos, deletando elementos da pilha a partir do topo.
emplaceEsta função é usada para inserir um novo elemento na pilha acima do elemento atual no topo.
swapEsta função é usada para trocar o conteúdo de dois contêineres de referência.
Operadores relacionaisOperadores relacionais
uses allocator<stack>Como o próprio nome sugere, a função não-membro usa o alocaador para a pilha.

Exemplo: um programa simples que ilustra o uso das funções básicas da pilha.

#include <iostream>
#include <stack>
using namespace std;
void newstack(stack<int> ss)
{
	stack<int> sg = ss;
	while (!sg.empty())
	{
		cout << '\t' << sg.top();
		sg.pop();
	}
	cout << '\n';
}
int main()
{
	stack<int> newst;
	newst.push(55);
	newst.push(44);
	newst.push(33);
	newst.push(22);
	newst.push(11);
	cout << "última pilha é: ";
	newstack(newst);
	cout << "\n newst.size() : " << newst.size();
	cout << "\n newst.top() : " << newst.top();
	cout << "\n newst.pop() : ";
	newst.pop();
	newstack(newst); 
	return 0;
}

Saída:

O último pilar é : 	11	22	33	44	55
 newst.size() : 5
 newst.top() : 11
 newst.pop() : 	22	33	44	55