Exemple:
Commençons par l'exemple de l'utilisation d'une file d'attente prioritaire avec le comparateur personnalisé en C++. Ainsi, la coquille de borne doit être ouverte avec Ctrl + Alt + T Short Way. Le fichier C ++ doit être créé dans le shell en utilisant l'instruction «Touch» d'Ubuntu. C'est assez facile de le faire. Après cela, ce fichier doit être ouvert au sein d'un éditeur pour faire du code. Vous pouvez avoir un éditeur VIM, Text ou Nano. Nous utilisons ici l'éditeur «Nano» pour l'édition rapide et la mise à jour.
$ touche la file d'attente.CC
$ Nano Queue.CC
Ainsi, le fichier C ++ vide sera ouvert sur votre écran de terminal au sein de l'éditeur Nano. Il est temps d'ajouter des bibliothèques d'en-tête dans son début pour que notre code fonctionne correctement. Par conséquent, nous avons utilisé le panneau «#include» avec chaque en-tête. L'en-tête «iOStream» est utilisé pour utiliser le flux d'entrée-sortie. L'en-tête «vecteur» est rejeté pour utiliser la structure de données vectorielle. L'en-tête «non ordonné_map» a été utilisé pour créer une carte pour les valeurs d'un vecteur en quantités. Le fichier d'en-tête «file d'attente» est là pour utiliser la file d'attente prioritaire et ses fonctions de données connexes. Nous avons commencé la méthode principale () après l'utilisation de l'espace de noms standard «STD», nous avons commencé la méthode principale (). Nous avons créé une structure de données vectorielle nommée «couleur» du type de chaîne pour maintenir les valeurs de chaîne. Alors que l'objet vectoriel «couleur» a utilisé la fonction push_back () pour ajouter des noms de couleur dans le vecteur, je.e., Rouge, vert, bleu, blanc et noir.
#inclure
#inclure
#inclure
#inclure
Utilisation de Namespace Std;
int main()
couter << "Starting… \n";
vecteurcouleur;
couleur.push_back ("rouge");
couleur.push_back ("vert");
couleur.push_back ("bleu");
couleur.push_back ("blanc");
couleur.push_back ("noir");
Après avoir créé un objet vectoriel, nous devons créer une structure de carte à l'aide du mot-clé «Undered_Map». L'objet de cette carte est «m» et il contient des paramètres de chaîne et entier. La carte est créée pour lier la quantité entière avec le vecteur de chaîne, de sorte que la valeur de type entier est affectée aux valeurs de chaîne d'un vecteur «couleur» individuellement.
Non ordonné_mapm;
m ["rouge"] = 2;
m ["vert"] = 4;
m ["bleu"] = 6;
m ["blanc"] = 8;
m ["noir"] = 10;
Voici le comparateur personnalisé déclaré «CMP» variable avec le mot-clé «Auto."Le mot-clé automatique est utilisé pour récupérer le résultat de tout type sans le définir. L'instruction «IF» est utilisée pour vérifier si la quantité d'une valeur de carte gauche est égale à la quantité d'une valeur de carte droite ou non. Si c'est le cas, il reviendra que le caractère du côté gauche est supérieur au caractère du côté droit d'une chaîne à la variable «CMP». S'ils ne sont pas égaux, il renverra que la valeur de quantité côté droit est supérieure à la valeur de quantité côté gauche d'une chaîne via une carte. Il s'agit de tri la quantité dans l'ordre descendant tandis que le nom de la chaîne est ordonné par ordre croissant.
auto cmp = [&] (String & l, String & r)
if (m [le] == m [r])
retourner l> r;
retour m [r]> m [l];
;
Maintenant, il est temps de créer une file d'attente prioritaire et d'ajouter toutes les couleurs en utilisant le vecteur. Ainsi, la file d'attente de priorité a été générée à l'aide du vecteur de type de chaîne, et le type de déclaration a été défini comme obtenu à partir de la variable comp. Le PQ est l'objet de file d'attente prioritaire. La boucle «pour» est là pour pousser chaque couleur à la file d'attente prioritaire «pq» via la fonction push ().
File d'attente de priorité, DecType (CMP)> PQ (CMP);
for (const string & clr: couleur)
pq.push (CLR);
La boucle «while» continue d'être exécutée jusqu'à ce que la file d'attente ne soit pas vide et en ajoute chaque chaîne à la chaîne «CLR». Cette valeur particulière serait apparue et afficherait sur la coquille. Notre code de programme est terminé ici et prêt à être exécuté.
alors que(!pq.vide())
String Fruit = PQ.haut();
pq.populaire();
couter << fruit << " " << m[fruit] << endl;
couter << "Ending… \n";
retour 0;
La compilation est assez réussie. Plus que cela, toutes les valeurs de chaîne du vecteur ont été affichées sur la coquille avec leurs quantités qui sont cartographiées via «Map.«Vous pouvez voir que l'ordre de quantité est descendant dans notre cas.
Fitre $ G ++.CC
$ ./un.dehors
Conclusion:
Il s'agissait de l'exemple simple d'une file d'attente prioritaire avec un comparateur personnalisé en C++. Nous en avons discuté dans un seul exemple en détail en maintenant un moyen simple et le plus simple. Nous avons ajouté le code sous forme de morceaux qui aident les lecteurs à bien le comprendre.