Les files de priorité

Les files de priorité

priority_queue

Voir version :

Pas de dépendances

Télécharger :

#include <queue>
#include <iostream>

using namespace std;

int main()
{
    priority_queue<int> q;

    q.push(5);
    q.push(13);
    q.push(8);
    q.push(6);

    cout << "lecture de la file de priotite" << endl;
    while(!q.empty())
    {
        cout << q.top() << endl;
        q.pop();
    }
    return 0;
}



Commentaires


Reprenons l'exemple précédent :

  nous avons cette fois une file de priority :
  c'est en fait tres tres simple :

  C'est une file qui garde les éléments dans l'ordre.
  Lancez le programme. Vous voyez que la file vous donne l'élément le plus grand d'abord.
  (* si vous voulez un tri différent, regardez le chapitre suivant sur les foncteurs.)

  L'algorithme s'appuie sur un vector. C'est l'algorithme du tri en "tas" que je n'expliquerai pas.
  
  Que dire d'autre sur les files de priorité ? 
  Contrairement au "set" que nous verrons plus loin, vous ne pouvez récupérer QUE le premier élément,
  Donc si vous voulez le 2e élément, vous etes obligé d'enlever le premier pour y accéder.

  Cet algorithme est rapide.

  Il s'agit toujours d'un algorithme en template : vous pouvez mettre des int, des double, ou "class machin"
  cependant, ATTENTION !!!!
  pour les int et les double, l'ordi sait comparer tout seul et savoir lequel est le plus grand.
  Mais si vous faites une "class machin" et que vous en voulez une file de priorité,
  il FAUT dire a l'ordinateur comment faire pour savoir, entre 2 instance de "class machine" laquelle est la plus grande, laquelle est la plus petite.
  Pour cela, 2 méthodes :
  - Vous surchargez l'opérateur < (voir surcharge des opérateurs dans les classes, chapitre C) et vous manipulez donc les files comme ici.
  - Vous utilisez un foncteur (chapitre suivant)

  note : inclure <queue> pour se servir des files des priorité.