Coda con priorità
Lezione 12 di 23 del corso C++ - Libreria standard dei template di Coddy.
In C++, abbiamo anche la struttura dati chiamata coda con priorità. La coda con priorità ci offre una funzionalità speciale che la coda normale non ha: a ogni elemento è associato un valore di priorità e gli elementi vengono serviti in base alla loro priorità.

Una coda con priorità di base è progettata in modo che il primo elemento della coda sia il più grande di tutti e gli altri siano ordinati in ordine decrescente.
priority_queue<dataType> queueNamePer prima cosa, dobbiamo includere il file header della coda con priorità all'inizio del nostro file C++.
Creiamo la coda con priorità come gli altri contenitori già visti.
priority_queue<int> integers;Successivamente, usiamo il metodo push() per aggiungere nuovi elementi alla coda. L'elemento viene aggiunto e, se è maggiore di tutti gli altri elementi, verrà memorizzato per primo. Se è minore di tutti gli altri elementi, verrà memorizzato per ultimo, e così via.
integers.push(5); // integers = {5)Per visualizzare gli elementi usiamo il metodo top(), come per lo stack. Visualizza l'elemento con la priorità più alta; nel caso degli interi, visualizzerà il numero più grande.
integers.push(100); // integers = {100, 5}
integers.push(10); // integers = {100, 10, 5}
integers.push(3); // integers = {100, 10, 5, 3}
cout << integers.top();Output:
100Rimuoviamo gli elementi esattamente come con lo stack, usando il metodo pop(). Rimuove l'elemento in cima, quello con la priorità più alta. Nel caso dei numeri, il più grande.
integers.pop(); // integers = {10, 5, 3}
cout << integers.top();Output:
10Possiamo modificare la priorità della coda in base alla quale vengono ordinati gli elementi. Per esempio, possiamo dichiarare una coda con priorità che ordina gli interi in ordine crescente, come segue:
priority_queue<int, vector<int>, greater<int> > integers;In questa coda, quando gli elementi vengono inseriti, sono ordinati in ordine crescente. Quando vogliamo visualizzare l'elemento in cima o rimuoverlo usando il metodo pop(), verrà visualizzato o rimosso il numero più piccolo.
Per ora, non preoccuparti di usare la coda con priorità in modo diverso e di modificarne la priorità. Ricorda solo che questa struttura dati è disponibile per essere utilizzata, così possiamo ordinare gli elementi in base a qualche tipo di priorità
Metodi della coda con priorità
| Metodo | Funzionalità |
size() | Restituisce il numero di elementi della coda |
empty() | Restituisce true se la coda è vuota, false altrimenti |
swap() | Scambia il contenuto di una coda con quello di un'altra |
Sfida
FacileDato un numero N in input. Nelle successive N righe ti verrà dato un numero. Usando una coda con priorità, visualizza i numeri inseriti dal più grande al più piccolo (in ordine decrescente).
Input
5
10
50
20
40
30Output
50 40 30 20 10Provalo tu
#include <queue>
#include <iostream
using namespace std;
int main()
{
// Enter your code here
return 0;
}Tutte le lezioni di C++ - Libreria standard dei template
Esercitati da solo: Compilatore C++ online