Die Prioritätswarteschlange in C++ ist ein abgeleiteter Container in STL, der nur das Element mit der höchsten Priorität berücksichtigt. Die Warteschlange folgt der FIFO-Richtlinie, während die Prioritätswarteschlange die Elemente basierend auf der Priorität entnimmt, d. h. das Element mit der höchsten Priorität wird zuerst entfernt.
In bestimmten Aspekten ähnelt sie der normalen Warteschlange, unterscheidet sich jedoch in folgenden Punkten:
- In einer Prioritätswarteschlange ist jedem Element in der Warteschlange eine bestimmte Priorität zugeordnet, eine Priorität existiert jedoch nicht in einer Warteschlangendatenstruktur.
- Das Element mit der höchsten Priorität in einer Prioritätswarteschlange wird zuerst entfernt, während die Warteschlange dem folgt FIFO (First-In-First-Out) Richtlinie bedeutet, dass das Element, das zuerst eingefügt wird, zuerst gelöscht wird.
- Wenn mehr als ein Element mit derselben Priorität vorhanden ist, wird die Reihenfolge des Elements in einer Warteschlange berücksichtigt.
Hinweis: Die Prioritätswarteschlange ist die erweiterte Version einer normalen Warteschlange, mit der Ausnahme, dass das Element mit der höchsten Priorität zuerst aus der Prioritätswarteschlange entfernt wird.
Syntax der Prioritätswarteschlange
priority_queue variable_name;
Lassen Sie uns die Prioritätswarteschlange anhand eines einfachen Beispiels verstehen.
In der obigen Abbildung haben wir die Elemente mithilfe einer push()-Funktion eingefügt, und der Einfügevorgang ist identisch mit der normalen Warteschlange. Wenn wir jedoch das Element mit der Funktion pop() aus der Warteschlange löschen, wird zuerst das Element mit der höchsten Priorität gelöscht.
Mitgliedsfunktion der Prioritätswarteschlange
Funktion | Beschreibung |
---|---|
drücken() | Es fügt ein neues Element in eine Prioritätswarteschlange ein. |
Pop() | Es entfernt das oberste Element aus der Warteschlange, das die höchste Priorität hat. |
Spitze() | Mit dieser Funktion wird das oberste Element einer Prioritätswarteschlange angesprochen. |
Größe() | Es bestimmt die Größe einer Prioritätswarteschlange. |
leer() | Es überprüft, ob die Warteschlange leer ist oder nicht. Basierend auf der Überprüfung wird der Status zurückgegeben. |
tauschen() | Es tauscht die Elemente einer Prioritätswarteschlange mit einer anderen Warteschlange desselben Typs und derselben Größe aus. |
Standort() | Es fügt ein neues Element oben in die Prioritätswarteschlange ein. |
Lassen Sie uns ein einfaches Programm der Prioritätswarteschlange erstellen.
#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>
Sehen wir uns ein weiteres Beispiel einer Prioritätswarteschlange an.
#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; }
Im obigen Code haben wir zwei Prioritätswarteschlangen deklariert, nämlich p und q. Wir haben vier Elemente in die Prioritätswarteschlange „p“ und vier in die Prioritätswarteschlange „q“ eingefügt. Nach dem Einfügen der Elemente tauschen wir die Elemente der Warteschlange „p“ mit der Warteschlange „q“ mithilfe einer swap()-Funktion aus.
Ausgabe
Elements of p are : 8 7 6 5 Elements of q are : 4 3 2 1
'number>