Nous utilisons des cookies pour améliorer votre expérience. En poursuivant votre navigation sur ce site, vous acceptez l'utilisation de cookies.


Politique de confidentialité
Introduction et syntaxe de base
Pointeurs et fonctions
Programmation OO
Structures de données
La bibliothèque standard (STL)

La classe queue (File d'attente) en C++ (bibliothèque STL) <queue>

 

La classe queue (File d'attente) en C++ (bibliothèque STL) <queue>

La classe queue ou file d'attente en français, qui est définie dans le fichier d'en-tête <queue>, est une classe d'adaptateur de conteneur conçue pour trois opérations simples : l'insertion à une extrémité, la suppression à l'autre extrémité et l'accès aux deux extrémités. Elle est également appelée structure premier entré, premier sorti (FIFO) car le premier élément poussé (ajouté) dans la file d'attente est le premier élément à être extrait (supprimé) de la file d'attente.

Les files d'attente sont implémentées en tant qu'adaptateurs de conteneurs, qui sont des classes qui utilisent un objet encapsulé d'une classe de conteneur spécifique comme conteneur sous-jacent, fournissant un ensemble spécifique de fonctions membres pour accéder à ses éléments.

Les éléments sont poussés dans la queue (back) du conteneur spécifique et supprimé de son sommet(front).

Le conteneur doit prendre en charge les opérations suivantes :

  •  empty
  •  size
  •  front
  •  back
  •  push_back
  •  pop_front

Les classes de conteneurs standard deque et list satisfont à ces exigences. Par défaut, si aucune classe de conteneur n'est spécifiée pour une instanciation de classe de file d'attente particulière, le conteneur standard deque est utilisé.

Syntaxe

Voici la syntaxe pour définir une file d'attente :

queue<type_objets> nomFileAttente;

L'instruction ci-dessus créera une file d'attente nommée nomFileAttente de type type_objets.

Opérations

L'interface queue nous permet de créer une queue vide. Nous pouvons vérifier la taille (size()) et est-ce que la file d’attente est vide(empty()). Les deux seules fonctions membres que nous pouvons utiliser pour accéder aux éléments de la file d'attente sont les fonctions membres front() et back(). Les opérations push() et pop() sont utilisées pour insérer un élément dans la file et effacer un élément de la file, respectivement.

FonctionDescription
bool empty()Retourne true si la file d'attente est vide : c'est-à-dire si sa taille est nulle.
size_type size()Renvoie le nombre d'éléments dans la file d'attente.
type_valeur& front()Renvoie une référence à l'élément suivant dans la file d'attente. L'élément suivant est l'élément "le plus ancien" de la file d'attente et le même élément qui est sorti de la file d'attente lorsque queue::pop est appelée.
type_valeur& back()Renvoie une référence au dernier élément de la file d'attente. Il s'agit de l'élément "le plus récent" de la file d'attente (c'est-à-dire le dernier élément poussé dans la file d'attente).
void push (const value_type& val)Insère un nouvel élément à la fin de la file d'attente, après son dernier élément courant. Le contenu de ce nouvel élément est initialisé à val.
void pop()Supprime l'élément suivant dans la file d'attente, réduisant ainsi sa taille de 1. L'élément supprimé est l'élément "le plus ancien" de la file d'attente dont la valeur peut être récupérée en appelant la fonction membre queue::front.

Exemple complet

#include <iostream>
#include <queue>

using namespace std;

int main() {
    queue<int> fileAttente;
    fileAttente.push(10);
    fileAttente.push(20);
    fileAttente.push(50);
    fileAttente.push(70);
    fileAttente.push(30);

    cout<< "Sommet de la file d'attente : "<<fileAttente.front()<<'\n';
    cout<< "La queue de la file d'attente : "<<fileAttente.back()<<'\n';
    cout<< "Taille de la file d'attente : "<<fileAttente.size();
    cout<<'\n';
     
    fileAttente.pop(); // Supprimer le sommet
    
    // Afficher l'ensemble des éléments
    cout<< "Les elements de la file d'attente : ";
    while (!fileAttente.empty()) {
        cout << fileAttente.front() << ' ' ; // Afficher le sommet
        fileAttente.pop(); // supprimer le sommet
    }

    cout<<'\n';

    cout<< "Taille de la file d'attente apres: "<<fileAttente.size();

    return 0;
}
        
Résultat
Sommet de la file d'attente : 10
La queue de la file d'attente : 30
Taille de la file d'attente : 5
Les elements de la file d'attente : 20 50 70 30
Taille de la file d'attente apres: 0
                

Partager ce cours avec tes amis :
Rédigé par ESSADDOUKI Mostafa
ESSADDOUKI
The education of the 21st century opens up opportunities to not merely teach, but to coach, mentor, nurture and inspire.