Cum se implementează o coadă prioritară în C ++



Acest articol vă va oferi cunoștințe detaliate și cuprinzătoare despre cum să implementați o coadă prioritară în C ++ cu exemple.

O coadă prioritară este un container din STL. Este similar cu coada, cu excepția faptului că fiecare element al cozii de prioritate are o anumită prioritate și când scoatem elemente din coada de prioritate, elementele cu cea mai mare prioritate sunt afișate mai întâi. La fel ca coada prioritară, există 10 tipuri diferite de containere în STL . Un container este un obiect care stochează date. Containerele STL sunt implementate cu ajutorul claselor de șabloane, prin urmare personalizarea acestora pentru a conține diferite tipuri de date este ușoară. În această postare, vom discuta în detaliu coada prioritară și conceptele legate de aceasta. Următorii indicatori vor fi acoperiți în această coadă prioritară în articolul C ++,

Continuăm cu acest articol despre Coada prioritară în C ++





Componentele STL

STL constă din clase de șabloane și funcții care pot fi utilizate ca o abordare standard pentru stocarea și prelucrarea datelor. Să discutăm despre componentele STL

Containere- Există 10 tipuri de containere definite în STL și acestea sunt grupate în 3 categorii. Dintre aceste 3, cozile prioritare aparțin categoriei containerului derivat. Fiecare clasă de containere are propriul set de funcții care pot fi utilizate pentru a manipula datele.



Algoritm - Un algoritm este o metodă utilizată pentru a procesa datele prezente în obiectul container. STL oferă multe tipuri diferite de algoritmi care pot fi folosiți la inițializare, căutare, sortare, fuzionare, copiere. Algoritmii sunt implementați cu ajutorul funcțiilor șablon.

Iterator- Un iterator este un obiect care indică spre un element din container. Iteratorii pot ajuta la deplasarea prin conținutul unui container. Iteratorii sunt ca niște indicatori care pot fi incrementați și decrementați. Acționează ca o legătură între algoritm și container. Iteratoarele sunt utilizate pentru manipularea datelor stocate într-un container.

Continuăm cu acest articol despre Coada prioritară în C ++



logică fuzzy în inteligența artificială

Greutăți și coadă prioritară

După cum am văzut mai devreme, Priority Queue aparține categoriei de containere derivate. Alți membri din această categorie sunt stack și coadă. Aceste containere derivate sunt, de asemenea, cunoscute sub numele de adaptoare pentru containere.

Stiva, coada și coada prioritară sunt cunoscute ca containere derivate, deoarece sunt realizate din diferite containere de secvență. Aceste containere nu acceptă niciun tip de iteratoare, nu sunt utilizate pentru manipularea datelor.

Ce este exact o coadă prioritară?

În cuvinte simple, este un container pe care l-am folosit pentru a stoca date. Fiecărui element al datelor stocate i se atribuie o anumită prioritate care ne poate ajuta în stocarea datelor într-o ordine logică.
Sintaxă:prioritate_coadă nume_variabilă

Este important să includeți un fișier antet în program pentru a utiliza o coadă prioritară.

coadă prioritară în c ++De exemplu, dacă adăugăm 2, 10, 30, 5, 6 în coada noastră prioritară utilizând funcția push și apoi pop elementele folosind funcția pop, ieșirea va fi 30, 10, 6, 5, 2.

Bine, așa că acum știm scopul sau utilizarea cozii prioritare. Dar de unde știa dacă 30> 10? Face un fel de sortare? În acest moment, Heaps intră în imagine. Pentru a afla detalii despre grămezi, consultați acest articol.

metoda python __init__

Mormanele - Mormanele sunt structuri asemănătoare copacilor. Pe baza modului în care nodurile elementelor copil sunt aranjate într-o grămadă în raport cu nodurile părinte, grămezile sunt împărțite în 2 părți

unu. Min Heap- În Min Heap, valoarea nodului părinte este mai mică sau egală cu valoarea nodurilor copil.

2. Max Heap- În Max Heap, valoarea nodului părinte este mai mare sau egală cu valoarea nodurilor copil.

Notă- Coada prioritară nu sortează elementele folosind un algoritm de sortare, ci stochează datele sub forma unui heap.

Continuăm cu acest articol despre Coada prioritară în C ++

Tipărirea tuturor elementelor unei cozi prioritare

După ce înțelegem elementele fundamentale ale cozii prioritare, să implementăm programe pentru a înțelege metodele cele mai frecvent utilizate cu o coadă prioritară

#include #include folosind namespace 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 }

Ieșire:

30 15 10 9 6 2

În programul de mai sus, am folosit funcțiile pop (), top () și push () care sunt utilizate de cele mai multe ori în timp ce avem de-a face cu o coadă prioritară. Să aruncăm o privire la unele dintre metodele pe care le putem folosi cu o coadă prioritară

mărimea( ): Această funcție returnează dimensiunea cozii prioritare

gol (): Această funcție este utilizată pentru a verifica dacă coada de prioritate este goală sau nu. Revine adevărat, coada prioritară este goală.

Apăsați( ): Inserează un element în coada prioritară.

pop (): Această funcție elimină elementul superior al cozii de prioritate, care este elementul cu cea mai mare prioritate.

swap (): Această funcție schimbă elementele cozii prioritare cu o altă coadă prioritară. Funcția ia o coadă de prioritate ca parametru.

emplace (): Această funcție a fost utilizată pentru a adăuga un element în partea de sus a cozii de prioritate.

Să ne uităm la încă un program.

#include #include folosind namespace 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 }

Ieșire:

sunt git și github la fel

2 6 7 9 10 15 30

Cu aceasta, ajungem la sfârșitul acestei cozi prioritare în articolul C ++. Dacă doriți să aflați mai multe, consultați de Edureka, o companie de învățare online de încredere. Cursul de formare și certificare Java J2EE și SOA al Edureka este conceput pentru a vă instrui atât pentru conceptele Java de bază, cât și pentru cele avansate Java, împreună cu diverse cadre Java, cum ar fi Hibernate & Spring.

Ai o întrebare pentru noi? Vă rugăm să o menționați în secțiunea de comentarii a acestui blog și vă vom răspunde cât mai curând posibil.