Le code prioritarie sono una forma di adattatore a contenitore che è appositamente sviluppato in modo che, secondo alcune rigorose condizioni di smistamento deboli, il suo componente iniziale è sempre il più grande degli elementi in cui tiene. Questo framework ricorda un heap in quanto i componenti possono essere aggiunti in qualsiasi momento e può essere recuperato solo il numero massimo di componenti heap (il primo elemento nell'elenco delle priorità).
Le code prioritarie sono costruite come inverter del contenitore, che sono classi che utilizzano un'istanza chiusa di una particolare categoria di contenitori come contenitore effettivo e offrono un particolare insieme di variabili e funzioni per recuperare i loro componenti. Il valore più alto della coda prioritaria, o il "retro" del contenitore, è da dove vengono spinti i componenti."
Cos'è una coda prioritaria in C++?
Il primo componente in una coda prioritaria è il più grande di tutti i componenti nella coda e i componenti sono in ordine decrescente. Una coda prioritaria è una forma di adattatore di contenitori in C ++ che gestisce solo la componente prioritaria più alta.
Confronta una coda con una coda prioritaria
Non c'è priorità in una coda; Al contrario, un contenitore di coda considera che l'articolo abbia la massima priorità. La prima regola (FIFO) si applica alla coda; Tuttavia, nella coda di priorità, il componente con la massima priorità verrebbe rimossa prima. Se più articoli hanno una priorità simile, l'ordine della coda verrebbe utilizzato in questa situazione.
Sintassi della coda prioritaria
La coda prioritaria in C ++ ha la seguente sintassi:
I parametri sono descritti come segue:
La coda prioritaria è costruita con un heap massimo per impostazione predefinita++.
Sintassi della coda di priorità Min-Heap
La creazione della sintassi min-heap della coda prioritaria è la seguente:
Qui maggiore è una classe di confronto e il vettore è un contenitore di libreria modello standard.
Vantaggi dell'utilizzo della coda prioritaria
Viene assegnato il peso ai vertici, che consente loro di salire alla coda invece di cadere sul retro come sono in una coda standard.
Inconvenienti per l'utilizzo della coda prioritaria
Poiché dobbiamo anche utilizzare un'operazione di addizione per aggiungere gli articoli in base alla loro priorità, l'inserimento non richiede più un tempo fisso, come la fila. Implementazione utilizzando un elenco collegato consente di mantenere un tempo di inserimento coerente.
Metodologie di coda prioritaria
Le funzioni della coda prioritaria C ++ sono le seguenti:
Eseguiamo le funzioni sopra menzionate in codici diversi.
Esempio n. 1
Aggiungeremo un elemento a una coda prioritaria in questo esempio. Per aggiungere un elemento alla coda prioritaria, utilizzeremo la funzione push ().
I file di intestazione richiesti e saranno incorporati all'inizio del programma. Quindi lo spazio dei nomi standard verrà aggiunto come std. Ora la funzione principale () sarebbe chiamata. La coda dei valori interi verrà creata dopo. Questa coda sarà una coda prioritaria. Varie diverse verranno aggiunte a questa coda prioritaria. I numeri saranno inseriti dall'uso della funzione push (). Verranno aggiunti tre valori casuali utilizzando il metodo push. La dichiarazione "Cout" sarà impiegata per rappresentare il testo "Elements of the Priority Coda" sulla console.
Dopo aver visualizzato questa riga per stampare i valori del ciclo "mentre" verrà utilizzato; All'interno del ciclo "while", la funzione vuota () verrà applicata per verificare se la coda è vuota o no. Il metodo pop () verrà utilizzato per iniziare a stampare i valori della coda in ordine decrescente. Quindi il metodo pop () viene anche applicato ai valori della coda. Il "return 0" deve essere incorporato alla fine.
Abbiamo costruito una coda prioritaria con numeri interi chiamati num. La funzione push () è stata utilizzata per aggiungere le diverse voci alla coda: 12, 30 e 72.
Esempio n. 2
Contrariamente ai vettori e ad altre strutture, non possiamo attraversare una coda di priorità. Per questo motivo, abbiamo stampato i membri della coda prioritaria usando un ciclo while e metodi di coda di priorità diversi.
Questo è così che la coda prioritaria funzionerà come una tipica struttura dei dati della coda di priorità, motivo per cui è un adattatore di contenitori STL con accesso limitato. Di conseguenza, stampiamo la sua parte superiore prima di far scoppiare periodicamente l'oggetto all'interno di un ciclo fino a quando la coda è vuota.
Esempio n. 3
Abbiamo deciso di eliminare l'articolo dalla coda prioritaria in questo caso. La funzione pop () potrebbe essere utilizzata per eliminare un componente dalla coda prioritaria. Il valore massimo viene eliminato in questo approccio.
Avremo il codice integrando le librerie e lo spazio dei nomi standard. Le biblioteche contengono e . Il metodo per visualizzare la coda di priorità verrebbe quindi chiamato utilizzando Display_Priority_Queue (). La coda contiene i numeri interi, quindi "int" verrà fornito come argomento della funzione. Dopo tutto ciò, il metodo principale () verrà invocato. La coda verrà creata. La funzione push () verrà utilizzata per aggiungere valori diversi nella coda di priorità definita. L'istruzione "Cout" viene utilizzata per mostrare gli elementi originali della coda prioritaria.
Quindi verrà applicato il metodo pop (). Questa funzione elimina il valore specificato dalla coda prioritaria. Ora, l'istruzione "Cout" verrà impiegata per visualizzare i valori della coda dopo aver eliminato un elemento dalla coda. Il comando "return 0" sarebbe stato aggiunto. Successivamente, il metodo di utilità verrà utilizzato per mostrare la coda di priorità definita. Verrà impiegato il ciclo "mentre". All'interno dei metodi "while" loop vuoto () e top () verranno utilizzati. La condizione di loop verrà applicata alla funzione vuota (). Il metodo pop () verrebbe utilizzato per eliminare il valore più alto dalla coda prioritaria.
Qui, abbiamo fatto una coda di priorità intero chiamata NUM. I componenti iniziali della coda prioritaria sono “61, 23, 45."L'attributo più alto è stato quindi eliminato usando la tecnica pop (). Quindi, il risultato sarà "45, 23."
Esempio n. 4
In questo caso, la funzione superiore () verrà utilizzata per recuperare il valore massimo della coda prioritaria.
Le librerie e lo spazio dei nomi predefinite saranno integrati prima di iniziare a scrivere il codice. e sono entrambi disponibili nelle biblioteche. Chiameremo quindi la funzione principale (). Il metodo di creazione della coda prioritaria sarebbe quindi invocato. La funzione verrà fornita l'argomento "int" perché la coda contiene solo numeri interi. Varie diverse verranno aggiunte alla coda prioritaria specificata utilizzando la funzione push ().
Pop () verrà utilizzato dopo che gli elementi sono stati aggiunti alla coda prioritaria. Questa funzione ha mostrato il valore massimo della coda prioritaria fornita. Il testo "Elemento superiore della coda prioritaria" viene visualizzato utilizzando l'istruzione Cout. L'istruzione "return 0" potrebbe essere applicata per terminare il programma.
Esempio n. 5
In questa illustrazione, controlliamo se la coda prioritaria è vuota o no usando la funzione vuota (). Questa metodologia produce:
All'inizio del programma, i file di intestazione richiesti e sarebbero inclusi. Quindi STD verrà aggiunto allo spazio dei nomi standard. Ora il metodo principale () sarebbe invocato. Ci sarebbe una coda creata usando la funzione. Questo metodo prenderà il parametro "String" in quanto contiene valori con il tipo di dati "String" in questa coda. Questo avrà una priorità. “La coda contiene qualsiasi valore?"Verrebbe stampato usando il comando" cout ".
La condizione "if-else" verrebbe utilizzata per determinare la risposta. La funzione vuota () verrà applicata all'interno dell'istruzione "if" per verificare se la coda ha o meno valori. Se la coda contiene un valore, allora l'istruzione "cout" stampica "Sì", l'altra istruzione "cout" stampa "no" come output. Di conseguenza, la riga intitolata "spingere i valori della coda prioritaria" viene visualizzata sullo schermo dalla dichiarazione "cout". La coda prioritaria verrà aggiornata per includere i nomi di vari paesi. Il metodo push () verrebbe utilizzato per inserire i nomi. La tecnica push aggiungerà i nomi di tre paesi. “La coda contiene qualsiasi valore?"Sarà stampato sulla console utilizzando il comando" cout ".
La condizione "if-else" verrà applicata dopo il display di questa riga. Il metodo vuoto () verrà utilizzato ancora una volta per confermare se la coda è vuota o no. L'ultimo "return 0" deve essere presente.
Per verificare se la coda di priorità del paese è riempita o meno, abbiamo utilizzato la funzione vuota (). La coda è vuota all'inizio. Paese.vuoto () quindi restituisce vero. Successivamente, abbiamo aggiunto elementi alla coda e ancora una volta utilizzato la funzione vuota (). Questa volta, dà risultati falsi.
Conclusione
Innanzitutto, abbiamo esplorato quale coda prioritaria in C ++ è in questo articolo. Quindi contrastiamo la coda semplice con la coda prioritaria. Inoltre, abbiamo esaminato la sintassi della coda prioritaria, nonché i suoi benefici e gli svantaggi. Inoltre, abbiamo discusso dei vari metodi C ++ per le code prioritarie. Un contenitore chiamato coda prioritaria viene utilizzato per contenere i componenti con priorità. Contrariamente alle code, che aggiungono o rimuovono i componenti secondo la regola FIFO, gli articoli in una coda di priorità vengono eliminati in base alla priorità. Il componente iniziale rimosso dalla coda sarà quello che ha la massima priorità. Lo scopo della coda prioritaria è quello di gestire i componenti in base alla priorità.
In questo articolo sono state implementate cinque diverse istanze. In primo luogo, abbiamo utilizzato la funzione push () per inserire gli elementi nella coda di priorità. Il secondo esempio utilizza un ciclo "while" per mostrare i valori della coda prioritaria. Nel terzo scenario, abbiamo usato il metodo pop () per eliminare il valore massimo dalla coda prioritaria. Con l'aiuto della funzione superiore (), siamo stati in grado di recuperare il valore più alto nella quarta illustrazione. Nell'ultimo, abbiamo impiegato il metodo vuoto () per determinare se la coda prioritaria era vuota o no.