logo

File d'attente dans la bibliothèque de modèles standard C++ (STL)

Les files d'attente sont un type d'adaptateurs de conteneur qui fonctionnent selon un arrangement de type premier entré, premier sorti (FIFO). Les éléments sont insérés à l'arrière (fin) et sont supprimés à l'avant. Les files d'attente utilisent un objet encapsulé de deque ou liste (classe de conteneur séquentiel) comme conteneur sous-jacent, fournissant un ensemble spécifique de fonctions membres pour accéder à ses éléments.

Voici un exemple pour démontrer la file d’attente et ses différentes méthodes.



RPC

changer le nom du répertoire Linux






// CPP code to illustrate Queue in> // Standard Template Library (STL)> #include> #include> using> namespace> std;> // Print the queue> void> showq(queue<>int>>gq)> {> >queue<>int>>g = gq;> >while> (!g.empty()) {> >cout <<>' '> << g.front();> >g.pop();> >}> >cout <<>' '>;> }> // Driver Code> int> main()> {> >queue<>int>>gquiz;> >gquiz.push(10);> >gquiz.push(20);> >gquiz.push(30);> >cout <<>'The queue gquiz is : '>;> >showq(gquiz);> >cout <<>' gquiz.size() : '> << gquiz.size();> >cout <<>' gquiz.front() : '> << gquiz.front();> >cout <<>' gquiz.back() : '> << gquiz.back();> >cout <<>' gquiz.pop() : '>;> >gquiz.pop();> >showq(gquiz);> >return> 0;> }>



>

>

Sortir

The queue gquiz is : 10 20 30 gquiz.size() : 3 gquiz.front() : 10 gquiz.back() : 30 gquiz.pop() : 20 30>

Les méthodes de file d'attente sont :

java int sous forme de chaîne

La complexité temporelle et la définition des fonctions suivantes sont les suivantes :

file d'attente :: vide () O(1)
file d'attente :: taille () O(1)
queue::emplace() O(1)
file d'attente ::front() O(1)
file d'attente :: retour () O(1)
file d'attente :: push (g) O(1)
file d'attente ::pop() O(1)
Méthode Définition
file d'attente :: vide () Indique si la file d'attente est vide. Il renvoie vrai si la file d'attente est vide, sinon renvoie faux.
file d'attente :: taille () Renvoie la taille de la file d'attente.
file d'attente ::échange() Échangez le contenu de deux files d'attente, mais les files d'attente doivent être du même type de données, bien que les tailles puissent différer.
queue::emplace() Insérez un nouvel élément dans le conteneur de file d'attente, le nouvel élément est ajouté à la fin de la file d'attente.
file d'attente ::front() Renvoie une référence au premier élément de la file d'attente.
file d'attente :: retour () Renvoie une référence au dernier élément de la file d'attente.
file d'attente :: push (g) Ajoute l'élément 'g' à la fin de la file d'attente.
file d'attente ::pop() Supprime le premier élément de la file d'attente.

Programme C++ pour quelques méthodes supplémentaires

C++




générateur de nombres aléatoires Java
// CPP code to illustrate Queue operations in STL> // Divyansh Mishra -->divyanshmishra101010> #include> #include> using> namespace> std;> // Print the queue> void> print_queue(queue<>int>>q)> {> >queue<>int>>temp = q;> >while> (!temp.empty()) {> >cout << temp.front()<<>' '>;> >temp.pop();> >}> >cout <<>' '>;> }> // Driver Code> int> main()> {> >queue<>int>>q1;> >q1.push(1);> >q1.push(2);> >q1.push(3);> >cout <<>'The first queue is : '>;> >print_queue(q1);> > >queue<>int>>q2;> >q2.push(4);> >q2.push(5);> >q2.push(6);> >cout <<>'The second queue is : '>;> >print_queue(q2);> > > >q1.swap(q2);> > >cout <<>'After swapping, the first queue is : '>;> >print_queue(q1);> >cout <<>'After swapping the second queue is : '>;> >print_queue(q2);> > >cout

>

>

Sortir

The first queue is : 1 2 3 The second queue is : 4 5 6 After swapping, the first queue is : 4 5 6 After swapping the second queue is : 1 2 3 0>

Les complexités temporelles et spatiales des opérations dans ce code sont les suivantes :

Fonction print_queue :

Complexité temporelle : O(n), où n est le nombre d'éléments dans la file d'attente.
Complexité spatiale : O(n), où n est le nombre d’éléments dans la file d’attente.
q1.push(1), q1.push(2), q1.push(3), q2.push(4), q2.push(5), q2.push(6) :

Complexité temporelle : O(1) pour chaque opération push.
Complexité spatiale : O(n), où n est le nombre total d'éléments dans les deux files d'attente.
q1.swap(q2) :

Complexité temporelle : O(1) pour chaque opération de swap.
Complexité spatiale : O(1), car cette opération échange uniquement les pointeurs internes des deux files d'attente.
q1.empty() :

télécharger YouTube avec VLC

Complexité temporelle : O(1), car cette opération vérifie simplement si la file d'attente est vide.
Complexité de l'espace : O(1), car aucun espace supplémentaire n'est utilisé pour cette opération.
Dans l’ensemble, les complexités temporelles et spatiales de ce code sont raisonnables et efficaces pour les cas d’utilisation typiques.

Articles récents sur la file d'attente C++