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/returns false since q1 is not empty return 0; }> |
>
>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++