priority queue stl
Un examen approfondi de la file d'attente prioritaire dans STL.
Dans cette série C ++ explicite, nous avons vu des piles et des files d'attente dans le didacticiel précédent.
Dans ce didacticiel, nous aborderons encore un autre conteneur spécialisé en STL, à savoir la file d'attente prioritaire.
meilleur gestionnaire de tâches pour windows 10
Une file d'attente prioritaire est un adoptant de conteneur dans STL. Une file d'attente prioritaire est un conteneur dont les éléments sont disposés dans un ordre non décroissant de sorte que le premier élément est toujours le plus grand élément de la file d'attente.
=> Visitez ici pour la liste complète des didacticiels C ++.
Ce que vous apprendrez:
Aperçu
Contrairement à la file d'attente normale qui pousse et fait apparaître l'élément selon l'ordre FIFO, la file d'attente prioritaire a des éléments dans un ordre non décroissant et a une priorité (ordre fixe) pour chaque élément
La file d'attente prioritaire peut être vue de la même manière que la structure de données «max heap» en C ++.
La syntaxe générale de la file d'attente prioritaire est:
priority_queue queue_name;
Donc, si nous voulons définir une file d'attente prioritaire de type int, nous pouvons la définir comme suit:
comment afficher les fichiers dat sur windows
priority_queue mypqueue;
File d'attente prioritaire - Opérations
Voyons ci-dessous les opérations prises en charge par la file d'attente prioritaire.
- Pousser: Insère un élément dans la file d'attente prioritaire. Lors de l'insertion d'éléments, la priorité des éléments est conservée.
- Pop: Supprime l'élément le plus haut de la file d'attente prioritaire.
- Sommet: Renvoie l'élément le plus haut de la file d'attente prioritaire, c'est-à-dire le plus grand élément de la file d'attente prioritaire.
- Vider: Vérifie si la file d'attente prioritaire est vide.
- Taille: Renvoie la taille de la file d'attente prioritaire, c'est-à-dire le nombre d'éléments dans la file d'attente prioritaire.
Écrivons un programme pour démontrer l'utilisation de ces fonctions / opérations.
#include #include using namespace std; void displaypq(priority_queue pri_queue) { priority_queue pq = pri_queue; while (!pq.empty()) { cout << ' ' << pq.top(); pq.pop(); } cout << '
'; } int main () { priority_queue mypq; mypq.push(1); mypq.push(3); mypq.push(60); cout<<'
Priority queue after inserting value 60: '; displaypq(mypq); mypq.push(5); cout<<'
Priority queue after inserting value 5: '; displaypq(mypq); mypq.push(10); cout << '
The priority queue mypq is : '; displaypq(mypq); cout << '
mypq.size() : ' << mypq.size(); cout << '
mypq.top() : ' << mypq.top(); cout << '
mypq.pop() : '; mypq.pop(); displaypq(mypq); return 0; }
Production:
File d'attente prioritaire après insertion de la valeur 60: 60 3 1
File d'attente prioritaire après insertion de la valeur 5: 60 5 3 1
La file d'attente prioritaire mypq est: 60 10 5 3 1
mypq.size (): 5
mypq.top (): 60
mypq.pop (): 10 5 3 1
qu'est-ce que stringstream en c ++
Veuillez vérifier attentivement la sortie pour comprendre la file d'attente prioritaire. Tout d'abord, nous poussons les valeurs 1,3,60 comme indiqué dans la première ligne de la sortie. Ensuite, nous poussons la valeur 5 dans la file d'attente prioritaire. Après cela, la file d'attente prioritaire s'affiche. Notez que bien que la valeur 5 soit poussée après 60, le haut de la file d'attente prioritaire est toujours 60.
Encore une fois, nous poussons une autre valeur 10 et toujours, le haut de la file d'attente prioritaire est 60. En effet, tout en poussant des éléments, l'ordre ou la priorité des éléments est maintenu de sorte que le plus grand élément soit toujours en haut.
Conclusion
Tout cela concernait la mise en œuvre de la file d'attente prioritaire dans STL. Dans notre prochain didacticiel, nous en apprendrons plus sur les conteneurs STL tels que map et set.
=> Cliquez ici pour la série de formations Absolute C ++.