logo

Prioritetskø i C++

Prioritetskøen i C++ er en avledet container i STL som kun vurderer det høyest prioriterte elementet. Køen følger FIFO-policyen mens prioritetskøen åpner elementene basert på prioriteten, det vil si at det høyest prioriterte elementet vises først.

Den ligner på den vanlige køen i visse aspekter, men skiller seg på følgende måter:

  • I en prioritetskø er hvert element i køen knyttet til en eller annen prioritet, men prioritet eksisterer ikke i en kødatastruktur.
  • Elementet med høyest prioritet i en prioritetskø vil bli fjernet først mens køen følger FIFO (først-inn-først-ut) policy betyr at elementet som settes inn først vil bli slettet først.
  • Hvis det finnes mer enn ett element med samme prioritet, vil rekkefølgen til elementet i en kø bli tatt i betraktning.

Merk: Prioritetskøen er den utvidede versjonen av en normal kø, bortsett fra at elementet med høyest prioritet vil bli fjernet først fra prioritetskøen.

Syntaks for prioritert kø

 priority_queue variable_name; 

La oss forstå prioritetskøen gjennom et enkelt eksempel.

Prioritetskø i C++

I illustrasjonen ovenfor har vi satt inn elementene ved å bruke en push() funksjon, og innsettingsoperasjonen er identisk med den vanlige køen. Men når vi sletter elementet fra køen ved å bruke en pop()-funksjon, vil elementet med høyest prioritet bli slettet først.

Medlemsfunksjon for prioritert kø

Funksjon Beskrivelse
trykk() Den setter inn et nytt element i en prioritert kø.
pop() Den fjerner det øverste elementet fra køen, som har høyest prioritet.
topp() Denne funksjonen brukes til å adressere det øverste elementet i en prioritetskø.
størrelse() Den bestemmer størrelsen på en prioritert kø.
tømme() Den bekrefter om køen er tom eller ikke. Basert på verifiseringen returnerer den statusen.
bytte() Den bytter ut elementene i en prioritert kø med en annen kø med samme type og størrelse.
plassering() Den setter inn et nytt element øverst i prioritetskøen.

La oss lage et enkelt program med prioritert 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>

La oss se et annet eksempel på en prioritert 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 koden ovenfor har vi erklært to prioriterte køer, dvs. p og q. Vi satte inn fire elementer i 'p'-prioritetskøen og fire i 'q'-prioritetskøen. Etter å ha satt inn elementene, bytter vi elementene i 'p'-køen med 'q'-køen ved å bruke en swap()-funksjon.

Produksjon

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