Como usar a fila C ++

Como usar a fila C ++
Uma fila é uma coleção de itens, onde o primeiro item adicionado à lista deve ser o primeiro item a ser removido a seguir. Assim, à medida que os itens são adicionados à coleção, ela está crescendo em tamanho, eu.e. está crescendo em comprimento. Sempre que qualquer item deve ser removido, ele deve ser o primeiro adicionado. Se os itens forem removidos continuamente, o próximo removido é o segundo item; o terceiro é removido depois, e assim por diante.

Depois que o primeiro item da lista original foi removido, o segundo se torna o primeiro item. Depois que o segundo item foi removido, o terceiro se torna o primeiro item e assim por diante.

Um bom exemplo da vida real de uma fila é quando as pessoas se alinham para esperar pelo serviço ou bom. A primeira pessoa é servida primeiro antes do último. No entanto, a fila falou neste tutorial, é a fila de software, como projetado em c++.

FIFO

FIFO significa o primeiro in, primeiro a sair. É outra maneira de apreciar a fila. Isso significa que o primeiro item a entrar na lista é o primeiro item a ser removido, sempre que a remoção deve ocorrer. O início da lista é chamado de cabeça ou frente; O final da lista é chamado de traseira ou cauda.

Operações essenciais

Uma fila de software deve ter pelo menos as seguintes operações:

empurrar

Esta operação adiciona um novo elemento na parte de trás da fila. Esta operação é oficialmente chamada, enquistar -se.

mudança

Esta operação remove o primeiro elemento da fila e o segundo elemento se torna o novo primeiro elemento. Esta operação é oficialmente chamada Dequeue. É chamado pop em c++.

Este artigo explica como usar a estrutura de dados da fila C ++. Você deve conhecer os ponteiros C ++ e referências para entender o restante deste artigo.

Classe e objetos

Uma classe é um conjunto de variáveis ​​e funções que funcionam juntas, onde as variáveis ​​não têm valores atribuídos a. Quando os valores são atribuídos às variáveis, a classe se torna um objeto. Valores diferentes dados à mesma classe resultam em objetos diferentes; isto é, objetos diferentes são a mesma classe com valores diferentes. Diz -se que criar um objeto de uma classe está instanciando o objeto.

O nome, fila, é uma aula. Um objeto criado a partir da classe da fila tem um nome escolhido pelo programador.

É necessária uma função que pertence a uma classe para instanciar um objeto da classe. Em C ++, essa função tem o mesmo nome que o nome da classe. Objetos criados (instanciados) da classe têm nomes diferentes dados a eles, pelo programador.

Criar um objeto da classe significa construir o objeto; também significa instantâneo.

Um programa C ++ que usa a classe de fila começa com as seguintes linhas na parte superior do arquivo:

#incluir
#incluir
usando namespace std;

A primeira linha é para entrada/saída. A segunda linha é permitir que o programa use todos os recursos da classe da fila. A terceira linha permite que o programa use os nomes no espaço de nome padrão.

Sobrecarregando uma função

Quando duas ou mais assinaturas de função diferentes têm o mesmo nome, esse nome é considerado sobrecarregado. Quando uma função é chamada, o número e o tipo de argumentos, determine qual função é realmente executada.

Construção

fila nome()

A declaração a seguir instancia uma fila chamada, Que do Type Int.

fila That;

A fila está vazia. A declaração começa com a palavra reservada, fila seguida de colchetes de ângulo com o tipo de dados. Então você tem o nome do programador para a fila.

Construindo com a lista de inicializadores

A definição a seguir mostra como criar uma fila com a lista de inicializadores:

fila Que (1.1, 2.2, 3.3, 4.4);

Destruindo uma fila

Para destruir uma fila, deixe -a sair do escopo.

Acesso ao elemento da fila

push (valor)

Uma fila é a primeira lista da primeira saída. Então, cada valor é adicionado na parte traseira. O segmento de código a seguir cria uma fila vazia, após o que cinco valores de flutuação são adicionados na parte traseira:

fila That;
That.push (1.1);
That.empurrar (2.2);
That.empurrar (3.3);
That.push (4.4);
That.push (5.5);

tamanho () const

Isso retorna o número de elementos na fila. O código a seguir ilustra:

fila That;
That.push (1.1); That.empurrar (2.2); That.empurrar (3.3); That.push (4.4); That.push (5.5);
cout << que.size() << '\n';

A saída é 5.

frente()

Isso retorna uma referência ao primeiro elemento da fila, sem remover o elemento. A saída do código a seguir é 1.1.

fila That;
That.push (1.1); That.empurrar (2.2); That.empurrar (3.3); That.push (4.4); That.push (5.5);
cout << que.front() << '\n';

O elemento não é removido da fila.

frente () const

Quando a construção da fila é precedida por const, a expressão "Front () const" é executada em vez de "front ()". É usado no código a seguir, por exemplo.

Const fila Que (1.1, 2.2, 3.3, 4.4, 5.5);
cout << que.front() << '\n';

Uma referência constante é retornada. O elemento não é removido do vetor. Os elementos da fila não podem ser alterados.

voltar()

Isso retorna uma referência ao último elemento da fila, sem remover o elemento. A saída do código a seguir é 5.5.

fila That;
That.push (1.1); That.empurrar (2.2); That.empurrar (3.3); That.push (4.4); That.push (5.5);
cout << que.back() << '\n';

Back () const

Quando a construção da fila é precedida por const, a expressão "Back () const" é executada em vez de "traseiro ()". É usado no código a seguir, por exemplo.

Const fila Que (1.1, 2.2, 3.3, 4.4, 5.5);
cout << que.back() << '\n';

Uma referência constante é retornada. O elemento não é removido da fila. Com a const anterior para a construção da fila, os elementos na fila não podem ser alterados.

Capacidade da fila

tamanho () const

- Veja acima

vazio () const

Isso retorna 1 para verdadeiro se não houver elementos na fila, ou 0 para false se a fila estiver vazia. O código a seguir ilustra o seguinte:

fila Que1 (1.1, 2.2, 3.3, 4.4, 5.5);
cout << que1.empty() << '\n';
fila que2;
cout << que2.empty() << '\n';

A saída é:

0
1

Modificadores de fila

pop ()

Uma fila é FIFO, então qualquer elemento que deve ser removido deve ser removido do topo (cabeça) da fila. Esta função de membro remove o primeiro elemento sem devolvê -lo. O código a seguir ilustra o seguinte:

fila Que (1.1, 2.2, 3.3, 4.4, 5.5);
cout << que.front() << '\n';
That.pop ();
cout << que.size() << '\n';

A saída é:

1.1
4

a.troca (b)

Duas filas podem ser trocadas, conforme ilustrado neste segmento de código:

fila Que1 (1.1, 2.2, 3.3, 4.4, 5.5);
fila que2 (10, 20);
Que1.troca (que2);
cout << "First element and size of que1:"
<< que1.front() <<", "<< que1.size() << '\n';
cout << "First element and size of que2 "<<
Que2.frente() <<", "<< que2.size() << '\n';

A saída é:

Primeiro elemento e tamanho do que1: 10, 2

Primeiro elemento e tamanho do que2: 1.1, 5

Observe que o comprimento de uma fila é aumentado, se necessário. Além disso, valores que não tiveram substituições, são substituídos por algum valor padrão. Os tipos de dados devem ser do mesmo tipo.

Igualdade e operadores relacionais para filas

Para caracteres comuns em C ++, em ordem crescente, os números vêm antes das letras maiúsculas, que vêm antes das letras minúsculas. O personagem espacial vem antes de zero e todos eles.

Operadores de igualdade

Retorna 1 para verdadeiro e 0 para falso.

O operador ==

Retorna 1 Se as duas filas tiverem o mesmo tamanho e os elementos correspondentes são iguais; Caso contrário, ele retorna 0. Exemplo:

fila que1 ("Kind", "Algo mais");
fila que2 ("wicked");
int num = que1 == que2;
cout << num << '\n';

A saída é: 0.

O != Operador

- oposto do acima. Exemplo:

fila que1 ("Kind", "Algo mais");
fila que2 ("wicked");
int num = que1 != que2;
cout << num << '\n';

A saída é: 1.

Operadores relacionais

Retorna 1 para verdadeiro e 0 para falso.

O < Operator

Retorna 1 Se a primeira fila for o subconjunto inicial da segunda fila, com os elementos das duas partes iguais sendo iguais e na mesma ordem. Se ambas as filas tiverem o mesmo tamanho ou tamanhos diferentes, e passando da esquerda para a direita, um elemento é encontrado na primeira fila que é menor que o elemento correspondente na segunda fila, então eu ainda será retornado. Caso contrário, 0 será devolvido. Exemplo:

fila que1 ("Kind", "Algo mais");
fila que2 ("wicked");
int num = que1 < que2;
cout << num << '\n';

A saída é 1. < does not include the case when the size and order are the same.

O operador>

- oposto do acima. Exemplo:

fila que1 ("Kind", "Algo mais");
fila que2 ("wicked");
int num = que1> que2;
cout << num << '\n';

Saída: 0

O <= Operator

- igual a < but includes the case when the size and order are the same. Example:

fila que1 ("Kind", "Algo mais");
fila que2 ("wicked");
int num = que1 <= que2;
cout << num << '\n';

Saída: 1

O operador> =

- oposto do acima. Exemplo:

fila que1 ("Kind", "Algo mais");
fila que2 ("wicked");
int num = que1> = que2;
cout << num << '\n';

Saída: 0

Classe e seus objetos instanciados

Um valor é para um tipo de dados, como um objeto instanciado é para uma classe. A construção da fila também pode aceitar uma classe como um tipo de dados. O programa a seguir ilustra o seguinte:

#incluir
#incluir
usando namespace std;
CLASSE THECLA

público:
int num;
char estático ch;
Void Func (Char Cha, Const Char *str)
cout << "There are " << num << " books worth " <<
Cha << str << " in the store." << '\n';

Função de vazio estático (char ch)
if (ch == 'a')
cout << "Official static member function" << '\n';

;
int main ()
Thecla obj1; Thecla obj2; Thecla obj3; Thecla obj4; Thecla obj5;
fila That;
That.push (obj1);
That.push (obj2);
That.push (obj3);
That.push (obj4);
That.push (obj5);
cout << que.size() << '\n';
retornar 0;

A saída é 5.

Lista vinculada

A lista de filas é tecnicamente chamada de lista vinculada. Existem dois tipos de listas vinculadas para a fila: lista de vinculação individual e lista duplamente vinculada.

Um elemento de lista ligado individual pode ser implementado por uma estrutura de dois membros. Um membro contém um ponteiro para o próximo elemento e o outro membro segura o dado (singular para dados).

Um elemento de lista duplamente vinculado pode ser implementado por uma estrutura de três membros. O membro do meio detém o dado, enquanto o primeiro e o terceiro membros mantêm ponteiros para seus elementos adjacentes.

Aplicações da fila

A fila é a primeira estrutura de dados da primeira saída. Existem situações na computação quando os dados chegam na forma de uma fila, necessitando de um comportamento de primeiro na primeira saída.

Compartilhando recursos de computador

Um recurso em um computador é qualquer componente físico ou virtual da disponibilidade limitada. Eles incluem a CPU, a placa de vídeo, o disco rígido e a memória. Compartilhar esse recurso precisa de uma fila.

Manuseio interrupções

Os periféricos do computador precisam interromper o computador de tempos em tempos. As interrupções precisam ser tratadas da mesma maneira que chegaram. Isso precisa de uma fila.

Gerenciar informações.

A fila pode ser usada, por exemplo, para gerenciar arquivos de aplicativo para um trabalho, se os arquivos forem armazenados no computador.

Conclusão

Uma fila é uma estrutura de dados da lista, que é uma lista individual ou uma lista duplamente vinculada. Como regra, o primeiro elemento que entra na lista é o primeiro elemento a ser lançado. C ++ fornece uma estrutura de dados de fila em sua biblioteca padrão. As categorias de funções e operadores de membros disponíveis para essa estrutura são construção de filas, acesso ao elemento da fila, capacidade de fila, modificadores de fila e operadores sobrecarregados na fila.

Qualquer estrutura de dados da fila deve fornecer pelo menos as funções push () e pop (). push () significa enviar um novo elemento na parte traseira da fila; e pop () significa, remover o elemento que está na frente da fila. Infelizmente, em C ++, essas funções não retornam o valor empurrado ou estourado. Então, para saber o último elemento antes de pressionar, a função extra traseira () deve ser usada; E para saber o primeiro elemento antes de aparecer, a função extra () deve ser usada.

Um valor é para um tipo de dados, como um objeto instanciado é para uma classe. Portanto, uma classe específica pode ser usada como um tipo de dados para a instanciação do modelo de fila. Diferentes objetos para a classe se tornam diferentes valores para a classe.

A fila tem aplicativos no computador. Pode ser usado, por exemplo, para gerenciar arquivos de aplicativo para um trabalho, se os arquivos forem armazenados no computador.