logo

Prioritetskø i C++

Prioritetskøen i C++ er en afledt container i STL, der kun tager højde for det højeste prioritetselement. Køen følger FIFO-politikken, mens prioritetskø åbner elementerne baseret på prioritet, dvs. det højest prioriterede element vises først.

Det ligner den almindelige kø i visse aspekter, men adskiller sig på følgende måder:

  • I en prioritetskø er hvert element i køen forbundet med en prioritet, men prioritet eksisterer ikke i en kødatastruktur.
  • Elementet med den højeste prioritet i en prioritetskø vil blive fjernet først, mens køen følger FIFO(First-In-First-Out) politik betyder, at det element, der indsættes først, slettes først.
  • Hvis der findes mere end ét element med samme prioritet, tages der hensyn til rækkefølgen af ​​elementet i en kø.

Bemærk: Prioritetskøen er den udvidede version af en normal kø, bortset fra at elementet med den højeste prioritet vil blive fjernet først fra prioritetskøen.

Syntaks for Priority Queue

 priority_queue variable_name; 

Lad os forstå prioritetskøen gennem et simpelt eksempel.

Prioritetskø i C++

I ovenstående illustration har vi indsat elementerne ved at bruge en push() funktion, og indsættelsesoperationen er identisk med den normale kø. Men når vi sletter elementet fra køen ved at bruge en pop() funktion, så slettes elementet med den højeste prioritet først.

Medlemsfunktion i Prioritetskø

Fungere Beskrivelse
skubbe() Den indsætter et nyt element i en prioriteret kø.
pop() Det fjerner det øverste element fra køen, som har højeste prioritet.
top() Denne funktion bruges til at adressere det øverste element i en prioritetskø.
størrelse() Det bestemmer størrelsen af ​​en prioriteret kø.
tom() Det verificerer, om køen er tom eller ej. Baseret på verifikationen returnerer den status.
bytte rundt() Det udskifter elementerne i en prioritetskø med en anden kø med samme type og størrelse.
Beliggenhed() Den indsætter et nyt element øverst i prioritetskøen.

Lad os oprette et simpelt program med prioriteret kø.

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

Lad os se et andet eksempel på en prioriteret kø.

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

I ovenstående kode har vi erklæret to prioritetskøer, dvs. p og q. Vi indsatte fire elementer i 'p'-prioritetskøen og fire i 'q'-prioritetskøen. Efter at have indsat elementerne, bytter vi elementerne i 'p'-køen med 'q'-køen ved at bruge en swap()-funktion.

Produktion

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