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.
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<<'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 'p' :3 30 20 10 zzzzz/ </pre> <p> <strong>Let'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 '1' in p. p.push(2); // inserting element '2' in p. p.push(3); // inserting element '3' in p. p.push(4); // inserting element '4' in p. q.push(5); // inserting element '5' in q. q.push(6); // inserting element '6' in q. q.push(7); // inserting element '7' in q. q.push(8); // inserting element '8' in q. p.swap(q); std::cout << 'Elements of p are : ' << std::endl; while(!p.empty()) { std::cout << p.top() << std::endl; p.pop(); } std::cout << 'Elements of q are :' << std::endl; while(!q.empty()) { std::cout << q.top() << 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 'p' priority queue and four in 'q' priority queue. After inserting the elements, we swap the elements of 'p' queue with 'q' 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 '1' in p. p.push(2); // inserting element '2' in p. p.push(3); // inserting element '3' in p. p.push(4); // inserting element '4' in p. q.push(5); // inserting element '5' in q. q.push(6); // inserting element '6' in q. q.push(7); // inserting element '7' in q. q.push(8); // inserting element '8' in q. p.swap(q); std::cout << 'Elements of p are : ' << std::endl; while(!p.empty()) { std::cout << p.top() << std::endl; p.pop(); } std::cout << 'Elements of q are :' << std::endl; while(!q.empty()) { std::cout << q.top() << 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
'number>