logo

Prioritetskö i C++

Prioritetskön i C++ är en härledd behållare i STL som endast tar hänsyn till det högsta prioritetselementet. Kön följer FIFO-policyn medan prioritetskön poppar elementen baserat på prioriteten, dvs det högsta prioritetselementet visas först.

Den liknar den vanliga kön i vissa aspekter men skiljer sig på följande sätt:

python tuppel sorterad
  • I en prioritetskö är varje element i kön associerat med någon prioritet, men prioritet finns inte i en ködatastruktur.
  • Elementet med högst prioritet i en prioritetskö kommer att tas bort först medan kön följer FIFO (först-in-först-ut) policy betyder att elementet som infogas först kommer att tas bort först.
  • Om mer än ett element finns med samma prioritet, kommer ordningen på elementet i en kö att beaktas.

Obs: Prioritetskön är den utökade versionen av en normal kö förutom att elementet med högst prioritet tas bort först från prioritetskön.

Syntax för Priority Queue

 priority_queue variable_name; 

Låt oss förstå prioritetskön genom ett enkelt exempel.

Prioritetskö i C++

I illustrationen ovan har vi infogat elementen genom att använda en push() funktion, och infogningsoperationen är identisk med den normala kön. Men när vi tar bort elementet från kön genom att använda en pop()-funktion, kommer elementet med högst prioritet att tas bort först.

Medlemsfunktion i Priority Queue

Fungera Beskrivning
skjuta på() Den infogar ett nytt element i en prioritetskö.
pop() Det tar bort det översta elementet från kön, som har högsta prioritet.
topp() Denna funktion används för att adressera det översta elementet i en prioritetskö.
storlek() Det bestämmer storleken på en prioriterad kö.
tömma() Den verifierar om kön är tom eller inte. Baserat på verifieringen returnerar den statusen.
byta() Den byter ut elementen i en prioriterad kö med en annan kö med samma typ och storlek.
plats() Den infogar ett nytt element överst i prioritetskön.

Låt oss skapa ett enkelt program med prioriterad 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>

Låt oss se ett annat exempel på en prioriterad 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 ovanstående kod har vi deklarerat två prioriterade köer, dvs p och q. Vi infogade fyra element i 'p'-prioritetskön och fyra i 'q'-prioritetskön. Efter att ha infogat elementen byter vi elementen i 'p'-kön med 'q'-kön genom att använda en swap()-funktion.

Produktion

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