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

C++ Queue (Fila)

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 de criação do programa e o ambiente, temos uma grande quantidade de estruturas de dados disponíveis para escolher. Uma delas é a 'fila'. Antes de discutir esse tipo de dados, vamos dar uma olhada na sua sintaxe.

Sintaxe

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

Esta estrutura de dados é aplicável à técnica FIFO, onde FIFO significa primeiro a entrar, primeiro a sair. O elemento inserido primeiro será extraído primeiro, e assim por diante. Há um elemento chamado 'frente', que é o elemento localizado na posição mais à frente ou na primeira posição, e também há um elemento chamado 'trás', que é o elemento localizado na posição mais à trás. Em uma fila comum, a inserção dos elementos ocorre na extremidade, enquanto a exclusão começa pela frente.

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

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

  • empty

  • size

  • push_back

  • pop_front

  • front

  • back

Parâmetro de template

T:O parâmetro especifica o tipo dos elementos que o adaptador de contêiner manterá.

Container:O parâmetro especifica o objeto interno do contêiner, onde os elementos da fila são mantidos.

Tipos de membros

A seguir, é fornecida uma lista dos tipos de membros da fila e uma descrição breve sobre eles.

Tipos de membrosDescrição
value_typeEspecifica o tipo do elemento.
container_typeEspecifica o tipo do contêiner subjacente.
size_typeEspecifica o intervalo de tamanho do elemento.
referenceÉ o tipo de referência do contêiner.
const_referenceÉ o tipo de referência do contêiner constante.

Função

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

FunçãoDescrição
(constructor)Esta função é usada para construir o contêiner da fila.
emptyEsta função é usada para testar se a fila está vazia. Se a fila estiver vazia, esta função retorna true, caso contrário, retorna false.
sizeEsta função retorna o número de elementos na fila.
frontEsta função retorna o primeiro elemento. Este elemento desempenha um papel muito importante, pois todas as operações de exclusão são executadas no elemento front.
backEsta função retorna o último elemento. Este elemento desempenha um papel muito importante, pois todas as operações de inserção são executadas no elemento posterior.
pushEsta função é usada para inserir um novo elemento no final.
popEsta função é usada para remover o primeiro elemento.
emplaceEsta função é usada para inserir um novo elemento acima do elemento posterior na fila.
swapEsta função é usada para trocar o conteúdo de dois contêineres referenciados.
operadores relacionaisAs funções não-membros especificam os operadores relacionais necessários para a fila.
uses allocator<queue>Como o nome sugere, as funções não-membros usam o alocação de memória para a fila.

Exemplo: Um programa simples que mostra o uso das funções básicas da fila.

#include <iostream>
#include <queue>
using namespace std;
void showsg(queue<int> sg)
{
	queue<int> ss = sg;
	while (!ss.empty())
	{
		cout << "\t" << ss.front();
		ss.pop();
	}
	cout << "\n";
}
int main()
{
	queue<int> fquiz;
	fquiz.push(10);
	fquiz.push(20);
	fquiz.push(30);
	cout << "A fila fquiz é : ";
	showsg(fquiz);
	cout << "\nfquiz.size() : " << fquiz.size();
	cout << "\nfquiz.front() : " << fquiz.front();
	cout << "\nfquiz.back() : " << fquiz.back();
	cout << "\nfquiz.pop() : ";
	fquiz.pop();
	showsg(fquiz);
	return 0;
}

Saída:

A fila fquiz é : 	10	20	30
fquiz.size() : 3
fquiz.front() : 10
fquiz.back() : 30
fquiz.pop() : 	20	30