priority queue stl
Uma análise aprofundada da fila de prioridade em STL.
Nesta série Explicit C ++, vimos pilhas e filas no tutorial anterior.
Neste tutorial, discutiremos outro contêiner especializado em STL, ou seja, fila de prioridade.
o que pode reproduzir arquivos .swf
Uma fila de prioridade é um adotador de contêiner em STL. Uma fila de prioridade é um contêiner que possui os elementos organizados em ordem não decrescente de forma que o primeiro elemento seja sempre o maior elemento da fila.
=> Visite aqui para obter a lista completa de tutoriais em C ++.
O que você aprenderá:
Visão geral
Em contraste com a fila normal que empurra e retira o elemento de acordo com a ordem FIFO, a fila de prioridade possui elementos em ordem não decrescente e tem uma prioridade (ordem fixa) para cada elemento
A fila de prioridade pode ser vista de maneira semelhante a uma estrutura de dados de “heap máximo” em C ++.
A sintaxe geral da fila de prioridade é:
priority_queue queue_name;
Portanto, se quisermos definir uma fila de prioridade do tipo int, podemos defini-la da seguinte maneira:
como abrir arquivos .json
priority_queue mypqueue;
Fila prioritária - Operações
Vamos ver as operações suportadas pela fila de prioridade abaixo.
- Empurre: Insere um elemento na fila de prioridade. Ao inserir elementos, a prioridade dos elementos é mantida.
- Pop: Remove o elemento mais alto da fila de prioridade.
- Topo: Retorna o elemento superior na fila de prioridade, ou seja, o maior elemento na fila de prioridade.
- Vazio: Verifica se a fila de prioridade está vazia.
- Tamanho: Retorna o tamanho da fila de prioridade, ou seja, o número de elementos na fila de prioridade.
Vamos escrever um programa para demonstrar o uso dessas funções / operações.
#include #include using namespace std; void displaypq(priority_queue pri_queue) { priority_queue pq = pri_queue; while (!pq.empty()) { cout << ' ' << pq.top(); pq.pop(); } cout << '
'; } int main () { priority_queue mypq; mypq.push(1); mypq.push(3); mypq.push(60); cout<<'
Priority queue after inserting value 60: '; displaypq(mypq); mypq.push(5); cout<<'
Priority queue after inserting value 5: '; displaypq(mypq); mypq.push(10); cout << '
The priority queue mypq is : '; displaypq(mypq); cout << '
mypq.size() : ' << mypq.size(); cout << '
mypq.top() : ' << mypq.top(); cout << '
mypq.pop() : '; mypq.pop(); displaypq(mypq); return 0; }
Resultado:
como abrir arquivos jnlp no windows 8
Fila de prioridade após inserir o valor 60: 60 3 1
Fila de prioridade após inserir o valor 5: 60 5 3 1
A fila de prioridade mypq é: 60 10 5 3 1
mypq.size (): 5
mypq.top (): 60
mypq.pop (): 10 5 3 1
Verifique a saída com cuidado para entender a fila de prioridade. Primeiro, empurramos os valores 1,3,60, conforme mostrado na primeira linha da saída. Em seguida, colocamos o valor 5 na fila de prioridade. Depois disso, a fila de prioridade é exibida. Observe que, embora o valor 5 seja colocado após 60, o topo da fila de prioridade ainda é 60.
Novamente, pressionamos outro valor 10 e, ainda assim, o topo da fila de prioridade é 60. Isso ocorre porque enquanto empurra os elementos, a ordem ou prioridade dos elementos é mantida de forma que o maior elemento esteja sempre no topo.
Conclusão
Isso era tudo sobre a implementação de fila de prioridade em STL. Em nosso próximo tutorial, aprenderemos mais sobre contêineres STL como map e set.
=> Clique aqui para ver a série de treinamento Absolute C ++.