Come implementare una coda prioritaria in C ++



Questo articolo ti fornirà una conoscenza dettagliata e completa su come implementare una coda di priorità in C ++ con esempi.

Una coda prioritaria è un contenitore nell'STL. È simile alla coda eccetto per il fatto che ogni elemento della coda di priorità ha una certa priorità e quando inseriamo elementi dalla coda di priorità, gli elementi con la priorità più alta vengono estratti per primi. Come la coda di priorità, ci sono 10 diversi tipi di contenitori in STL . Un contenitore è un oggetto che memorizza i dati. I contenitori STL sono implementati con l'aiuto di classi template, quindi personalizzarli per contenere diversi tipi di dati è facile. In questo post, discuteremo in dettaglio la coda prioritaria e i concetti ad essa correlati. I seguenti puntatori saranno trattati in questo articolo Priority Queue in C ++,

Andando avanti con questo articolo su Priority Queue in C ++





Componenti di STL

STL è costituito da classi e funzioni modello che possono essere utilizzate come approccio standard per la memorizzazione e l'elaborazione dei dati. Parliamo dei componenti del STL

Contenitori Esistono 10 tipi di contenitori definiti in STL e questi sono raggruppati in 3 categorie. Di queste 3 code Priority appartiene alla categoria del contenitore derivato. Ogni classe contenitore ha il proprio set di funzioni che possono essere utilizzate per manipolare i dati.



Algoritmo - Un algoritmo è un metodo utilizzato per elaborare i dati presenti nell'oggetto contenitore. STL fornisce molti diversi tipi di algoritmi che possono essere utilizzati per inizializzare, cercare, ordinare, unire, copiare. Gli algoritmi vengono implementati con l'aiuto delle funzioni dei modelli.

Iteratore Un iteratore è un oggetto che punta verso un elemento nel contenitore. Gli iteratori possono essere utili per spostarsi tra i contenuti di un contenitore. Gli iteratori sono come puntatori che possono essere incrementati e decrementati. Funge da collegamento tra l'algoritmo e il contenitore. Gli iteratori vengono utilizzati per manipolare i dati archiviati in un contenitore.

Andando avanti con questo articolo su Priority Queue in C ++



Cumuli e coda prioritaria

Come abbiamo visto in precedenza Priority Queue appartiene alla categoria dei contenitori derivati. Altri membri di questa categoria sono stack e queue. Questi contenitori derivati ​​sono noti anche come adattatori contenitore.

Stack, coda e coda di priorità sono noti come contenitori derivati ​​in quanto sono costituiti da contenitori di sequenze differenti. Questi contenitori non supportano alcun tipo di iteratore, non vengono utilizzati per la manipolazione dei dati.

Cos'è esattamente una coda prioritaria?

In parole semplici, è un contenitore che abbiamo utilizzato per memorizzare i dati. Ad ogni elemento dei dati memorizzati viene assegnata una priorità che può aiutarci a memorizzare i dati in un ordine logico.
Sintassi:priority_queue nome_variabile

È importante includere un file di intestazione nel programma per utilizzare una coda di priorità.

coda di priorità in c ++Ad esempio, se aggiungiamo 2, 10, 30, 5, 6 nella nostra coda di priorità utilizzando la funzione push e poi inseriamo gli elementi utilizzando la funzione pop, l'output sarà 30, 10, 6, 5, 2.

Ok, quindi ora sappiamo lo scopo o l'uso della coda prioritaria. Ma come faceva a sapere se 30> 10? Sta facendo una sorta di smistamento? A questo punto entrano in gioco i cumuli. Per conoscere in dettaglio gli heap, fare riferimento a questo articolo.

Heap: i cumuli sono strutture simili ad alberi. In base a come i nodi degli elementi figlio sono disposti in un heap rispetto ai nodi padre, gli heap sono suddivisi in 2 parti

uno. Heap minimo In Min Heap, il valore del nodo padre è minore o uguale al valore dei nodi figlio.

come compilare il programma java

2. Heap massimo In Max Heap, il valore del nodo padre è maggiore o uguale al valore dei nodi figlio.

Nota- La coda prioritaria non ordina gli elementi utilizzando un algoritmo di ordinamento, ma memorizza i dati sotto forma di heap.

Andando avanti con questo articolo su Priority Queue in C ++

Stampa di tutti gli elementi di una coda prioritaria

Dopo aver compreso i fondamenti della coda di priorità, implementiamo programmi per comprendere i metodi più comunemente usati con una coda di priorità

#include #include utilizzando lo spazio dei nomi std int main () {priority_queue Prior_q Prior_q.push (10) Prior_q.push (30) Prior_q.push (6) Prior_q.push (2) Prior_q.push (15) Prior_q.push (9) Prior_q.push (7) while (Prior_q.empty () == false) {cout<< Prior_q.top() << ' ' Prior_q.pop() } return 0 }

Produzione:

30 15 10 9 6 2

Nel programma sopra, abbiamo usato le funzioni pop (), top () e push () che vengono utilizzate la maggior parte delle volte mentre si tratta di una coda prioritaria. Diamo un'occhiata ad alcuni dei metodi che possiamo utilizzare con una coda prioritaria

taglia( ): Questa funzione restituisce la dimensione della coda prioritaria

trova il maggior numero in java

vuoto( ): Questa funzione viene utilizzata per verificare se la coda di priorità è vuota o meno. Restituisce vero se la coda di priorità è vuota.

spingere( ): Inserisce un elemento nella coda prioritaria.

pop (): Questa funzione rimuove l'elemento superiore della coda di priorità che è l'elemento con la priorità più alta.

swap (): Questa funzione scambia gli elementi della coda di priorità con un'altra coda di priorità. La funzione accetta una coda prioritaria come parametro.

posto (): Questa funzione era utilizzata per aggiungere un elemento all'inizio della coda di priorità.

Diamo un'occhiata a un altro programma.

#include #include utilizzando lo spazio dei nomi std int main () {priority_queue Prior_q Prior_q.push (10) Prior_q.push (30) Prior_q.push (6) Prior_q.push (2) Prior_q.push (15) Prior_q.push (9) Prior_q.push (7) while (Prior_q.empty () == false) {cout<< Prior_q.top() << ' ' Prior_q.pop() } return 0 }

Produzione:

2 6 7 9 10 15 30

Con questo, arriviamo alla fine di questo articolo Priority Queue in C ++. Se desideri saperne di più, dai un'occhiata al da Edureka, una società di apprendimento online affidabile. Il corso di formazione e certificazione Java J2EE e SOA di Edureka è progettato per formarti sia sui concetti di base che avanzati su Java insieme a vari framework Java come Hibernate e Spring.

Hai domande per noi? Per favore, menzionalo nella sezione commenti di questo blog e ti risponderemo il prima possibile.