logo

Cua de prioritats en C++

La cua de prioritats en C++ és un contenidor derivat en STL que només considera l'element de prioritat més alta. La cua segueix la política FIFO, mentre que la cua de prioritat mostra els elements en funció de la prioritat, és a dir, l'element de prioritat més alta apareix primer.

És semblant a la cua ordinària en certs aspectes, però es diferencia de les següents maneres:

  • En una cua de prioritats, cada element de la cua està associat amb alguna prioritat, però la prioritat no existeix en una estructura de dades de la cua.
  • L'element amb la prioritat més alta en una cua de prioritat s'eliminarà primer mentre la cua segueixi FIFO (primer en entrar, primer en sortir) política significa que l'element que s'insereix primer s'eliminarà primer.
  • Si hi ha més d'un element amb la mateixa prioritat, es tindrà en compte l'ordre de l'element en una cua.

Nota: La cua de prioritat és la versió ampliada d'una cua normal, tret que l'element amb la prioritat més alta s'eliminarà primer de la cua de prioritat.

Sintaxi de la cua de prioritats

 priority_queue variable_name; 

Entendrem la cua de prioritats a través d'un exemple senzill.

Cua de prioritats en C++

A la il·lustració anterior, hem inserit els elements mitjançant una funció push() i l'operació d'inserció és idèntica a la cua normal. Però quan suprimim l'element de la cua utilitzant una funció pop(), primer s'eliminarà l'element amb la prioritat més alta.

Funció de membre de la cua de prioritats

Funció Descripció
empènyer () Insereix un element nou en una cua de prioritat.
pop() Elimina l'element superior de la cua, que té la prioritat més alta.
superior() Aquesta funció s'utilitza per abordar l'element superior d'una cua de prioritat.
mida () Determina la mida d'una cua de prioritat.
buit() Verifica si la cua està buida o no. En funció de la verificació, retorna l'estat.
intercanviar () Canvia els elements d'una cua de prioritat amb una altra cua que tingui el mateix tipus i mida.
ubicació() Insereix un element nou a la part superior de la cua de prioritats.

Creem un programa senzill de cua de prioritats.

 #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>

Vegem un altre exemple de cua de prioritats.

 #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; } 

Al codi anterior, hem declarat dues cues de prioritat, és a dir, p i q. Hem inserit quatre elements a la cua de prioritat 'p' i quatre a la cua de prioritat 'q'. Després d'inserir els elements, intercanviem els elements de la cua 'p' amb la cua 'q' mitjançant una funció swap().

Sortida

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