logo

Prioriteitswachtrij in C++

De prioriteitswachtrij in C++ is een afgeleide container in STL die alleen rekening houdt met het element met de hoogste prioriteit. De wachtrij volgt het FIFO-beleid, terwijl de prioriteitswachtrij de elementen op basis van de prioriteit verwijdert, dat wil zeggen dat het element met de hoogste prioriteit als eerste wordt geopend.

Het is in bepaalde opzichten vergelijkbaar met de gewone wachtrij, maar verschilt op de volgende manieren:

wachtrij en prioriteitswachtrij in Java
  • In een prioriteitswachtrij is elk element in de wachtrij geassocieerd met een bepaalde prioriteit, maar prioriteit bestaat niet in een wachtrijgegevensstructuur.
  • Het element met de hoogste prioriteit in een prioriteitswachtrij wordt als eerste verwijderd terwijl de wachtrij volgt FIFO (First-In-First-Out) beleid betekent dat het element dat als eerste wordt ingevoegd, als eerste wordt verwijderd.
  • Als er meer dan één element bestaat met dezelfde prioriteit, wordt rekening gehouden met de volgorde van het element in een wachtrij.

Opmerking: De prioriteitswachtrij is de uitgebreide versie van een normale wachtrij, behalve dat het element met de hoogste prioriteit als eerste uit de prioriteitswachtrij wordt verwijderd.

Syntaxis van prioriteitswachtrij

 priority_queue variable_name; 

Laten we de prioriteitswachtrij begrijpen aan de hand van een eenvoudig voorbeeld.

Prioriteitswachtrij in C++

In de bovenstaande illustratie hebben we de elementen ingevoegd met behulp van een push()-functie, en de invoegbewerking is identiek aan de normale wachtrij. Maar als we het element uit de wachtrij verwijderen met behulp van een pop()-functie, wordt het element met de hoogste prioriteit eerst verwijderd.

Lidfunctie van prioriteitswachtrij

Functie Beschrijving
duw() Het voegt een nieuw element in een prioriteitswachtrij in.
knal() Het verwijdert het bovenste element uit de wachtrij, dat de hoogste prioriteit heeft.
bovenkant() Deze functie wordt gebruikt om het bovenste element van een prioriteitswachtrij aan te pakken.
maat() Het bepaalt de grootte van een prioriteitswachtrij.
leeg() Er wordt gecontroleerd of de wachtrij leeg is of niet. Op basis van de verificatie retourneert het de status.
ruil() Het verwisselt de elementen van een prioriteitswachtrij met een andere wachtrij van hetzelfde type en dezelfde grootte.
plaats() Er wordt een nieuw element ingevoegd bovenaan de prioriteitswachtrij.

Laten we een eenvoudig programma met prioriteitswachtrij maken.

 #include #include using namespace std; int main() { priority_queue p; // variable declaration. p.push(10); // inserting 10 in a queue, top=10 p.push(30); // inserting 30 in a queue, top=30 p.push(20); // inserting 20 in a queue, top=20 cout&lt;<'number of elements available in 'p' :'<<p>In the above code, we have created a priority queue in which we insert three elements, i.e., 10, 30, 20. After inserting the elements, we display all the elements of a priority queue by using a while loop.<p></p> <p> <strong>Output</strong> </p> <pre> Number of elements available in &apos;p&apos; :3 30 20 10 zzzzz/ </pre> <p> <strong>Let&apos;s see another example of a priority queue.</strong> </p> <pre> #include #include using namespace std; int main() { priority_queue p; // priority queue declaration priority_queue q; // priority queue declaration p.push(1); // inserting element &apos;1&apos; in p. p.push(2); // inserting element &apos;2&apos; in p. p.push(3); // inserting element &apos;3&apos; in p. p.push(4); // inserting element &apos;4&apos; in p. q.push(5); // inserting element &apos;5&apos; in q. q.push(6); // inserting element &apos;6&apos; in q. q.push(7); // inserting element &apos;7&apos; in q. q.push(8); // inserting element &apos;8&apos; in q. p.swap(q); std::cout &lt;&lt; &apos;Elements of p are : &apos; &lt;&lt; std::endl; while(!p.empty()) { std::cout &lt;&lt; p.top() &lt;&lt; std::endl; p.pop(); } std::cout &lt;&lt; &apos;Elements of q are :&apos; &lt;&lt; std::endl; while(!q.empty()) { std::cout &lt;&lt; q.top() &lt;&lt; std::endl; q.pop(); } return 0; } </pre> <p>In the above code, we have declared two priority queues, i.e., p and q. We inserted four elements in &apos;p&apos; priority queue and four in &apos;q&apos; priority queue. After inserting the elements, we swap the elements of &apos;p&apos; queue with &apos;q&apos; queue by using a swap() function.</p> <p> <strong>Output</strong> </p> <pre> Elements of p are : 8 7 6 5 Elements of q are : 4 3 2 1 </pre> <hr></'number>

Laten we nog een voorbeeld bekijken van een prioriteitswachtrij.

 #include #include using namespace std; int main() { priority_queue p; // priority queue declaration priority_queue q; // priority queue declaration p.push(1); // inserting element &apos;1&apos; in p. p.push(2); // inserting element &apos;2&apos; in p. p.push(3); // inserting element &apos;3&apos; in p. p.push(4); // inserting element &apos;4&apos; in p. q.push(5); // inserting element &apos;5&apos; in q. q.push(6); // inserting element &apos;6&apos; in q. q.push(7); // inserting element &apos;7&apos; in q. q.push(8); // inserting element &apos;8&apos; in q. p.swap(q); std::cout &lt;&lt; &apos;Elements of p are : &apos; &lt;&lt; std::endl; while(!p.empty()) { std::cout &lt;&lt; p.top() &lt;&lt; std::endl; p.pop(); } std::cout &lt;&lt; &apos;Elements of q are :&apos; &lt;&lt; std::endl; while(!q.empty()) { std::cout &lt;&lt; q.top() &lt;&lt; std::endl; q.pop(); } return 0; } 

In de bovenstaande code hebben we twee prioriteitswachtrijen gedeclareerd, namelijk p en q. We hebben vier elementen ingevoegd in de prioriteitswachtrij 'p' en vier in de prioriteitswachtrij 'q'. Nadat we de elementen hebben ingevoegd, wisselen we de elementen van de 'p'-wachtrij om met de 'q'-wachtrij door een swap()-functie te gebruiken.

Uitvoer

git alles toevoegen
 Elements of p are : 8 7 6 5 Elements of q are : 4 3 2 1