La classe queue

Classe d’adaptateur de conteneur de modèle qui fournit une restriction de fonctionnalité pour un certain type de conteneur sous-jacent, limitant l’accès aux éléments à l’arrière ou à l’avant. Les éléments peuvent être ajoutés à l’arrière ou supprimés du front, et les éléments peuvent être inspectés à l’une ou l’autre des extrémités du queue.

Syntaxe

template <class Type, class Container = deque <Type>>
class queue

Paramètres

Type
Type de données d'élément à stocker dans le queue.

Container
Type du conteneur sous-jacent utilisé pour implémenter le queue.

Notes

Les éléments de classe Type stipulés dans le premier paramètre de modèle d’un queue objet sont synonymes value_type et doivent correspondre au type d’élément dans la classe Container de conteneur sous-jacente stipulée par le deuxième paramètre de modèle. Il Type doit être assignable, afin qu’il soit possible de copier des objets de ce type et d’affecter des valeurs à des variables de ce type.

Classes de conteneur sous-jacentes appropriées pour inclure et , ou tout autre conteneur de séquence qui prend en charge les opérations de front, back, push_backet pop_front.listdeque queue La classe de conteneur sous-jacent est encapsulée dans l'adaptateur de conteneur, qui expose seulement l'ensemble limité de fonctions membres du conteneur de séquence comme une interface publique.

Les queue objets sont comparables si et seulement si les éléments de la classe Type sont comparables et sont inférieurs à comparables si et seulement si les éléments de classe Type sont moins comparables.

Il existe trois types d’adaptateurs de conteneur définis par la bibliothèque standard C++ : stack, queueet priority_queue. Chaque type limite les fonctionnalités d’une classe de conteneur sous-jacent pour fournir une interface contrôlée de façon précise à une structure de données standard.

  • La stack classe prend en charge une structure de données de dernier entré et premier sorti (LIFO). Un bon analogique à garder à l’esprit serait une pile de plaques. Les éléments (les assiettes) peuvent être insérés, inspectés ou supprimés seulement à partir du haut de la pile, qui est le dernier élément à la fin du conteneur de base. La restriction d’accès uniquement à l’élément supérieur est la raison d’utiliser la stack classe.

  • La queue classe prend en charge une structure de données fiFO (first-out) de première entrée. Un bon analogique à garder à l’esprit serait les gens qui se préparent pour un distributeur de banque. Les éléments (les personnes) peuvent être ajoutés à l'arrière de la file et ils sont supprimés de l'avant de la file. Le début et la fin d'une file peuvent être inspectés. La restriction d’accès uniquement aux éléments et back aux front éléments de cette façon est la raison d’utiliser la queue classe.

  • La priority_queue classe trie ses éléments afin que le plus grand élément soit toujours à la position supérieure. Elle prend en charge l'insertion d'un élément, et l'inspection et la suppression de l'élément du haut. Un bon analogique à garder à l’esprit serait les gens qui s’alignent là où ils sont disposés par âge, hauteur ou un autre critère.

Membres

Constructeurs

Nom Description
queue Construit un objet queue qui est vide ou qui est une copie de l'objet conteneur de base.

Typedefs

Nom Description
container_type Type qui fournit le conteneur de base à adapter par l’objet queue.
size_type Type entier non signé qui peut représenter le nombre d'éléments dans un queue.
value_type Type qui représente le type d'objet stocké en tant qu'élément dans un objet queue.

Functions

Nom Description
back Retourne une référence au dernier élément (ajouté le plus récemment) à l’arrière de l’objet queue.
empty Vérifie si l'objet queue est vide.
front Retourne une référence au premier élément à l’avant de l’objet queue.
pop Supprime un élément à l’avant de l’objet queue.
push Ajoute un élément à l’arrière de l’objet queue.
size Retourne le nombre d'éléments d'un queue.

back

Retourne une référence au dernier élément (ajouté le plus récemment) à l’arrière de l’objet queue.

reference back();

const_reference back() const;

Valeur de retour

Dernier élément du queue. Si la queue valeur est vide, la valeur de retour n’est pas définie.

Notes

Si la valeur de retour d’un back objet est affectée à un const_reference, l’objet queue ne peut pas être modifié. Si la valeur de retour d’un back objet est affectée à un reference, l’objet queue peut être modifié.

Lorsqu’elle est compilée à l’aide de _ITERATOR_DEBUG_LEVEL la valeur 1 ou 2, une erreur d’exécution se produit si vous tentez d’accéder à un élément dans un élément vide queue. Consultez Itérateurs vérifiés pour plus d’informations.

Exemple

// queue_back.cpp
// compile with: /EHsc
#include <queue>
#include <iostream>

int main( )
{
   using namespace std;
   queue <int> q1;

   q1.push( 10 );
   q1.push( 11 );

   int& i = q1.back( );
   const int& ii = q1.front( );

   cout << "The integer at the back of queue q1 is " << i
        << "." << endl;
   cout << "The integer at the front of queue q1 is " << ii
        << "." << endl;
}

container_type

Type qui fournit le conteneur de base à adapter.

typedef Container container_type;

Notes

Le type est un synonyme du paramètre de modèle Container. Deux classes de conteneur de séquence de bibliothèque standard C++ ( la list classe et la classe par défaut deque ) répondent aux exigences à utiliser comme conteneur de base pour un queue objet. Les types définis par l’utilisateur peuvent également être utilisés s’ils remplissent les conditions.

Pour plus d’informations sur Container, consultez la section Remarques de la queue Class rubrique.

Exemple

Consultez l’exemple pour queue obtenir un exemple de déclaration et d’utilisation container_type.

empty

Vérifie si un queue est vide.

bool empty() const;

Valeur de retour

true si la queue valeur est vide ; false si elle queue n’est pas vide.

Exemple

// queue_empty.cpp
// compile with: /EHsc
#include <queue>
#include <iostream>

int main( )
{
using namespace std;

   // Declares queues with default deque base container
   queue <int> q1, q2;

   q1.push( 1 );

   if ( q1.empty( ) )
      cout << "The queue q1 is empty." << endl;
   else
      cout << "The queue q1 is not empty." << endl;

   if ( q2.empty( ) )
      cout << "The queue q2 is empty." << endl;
   else
      cout << "The queue q2 is not empty." << endl;
}
The queue q1 is not empty.
The queue q2 is empty.

front

Retourne une référence au premier élément à l’avant de l’objet queue.

reference front();

const_reference front() const;

Valeur de retour

Premier élément du queue. Si la queue valeur est vide, la valeur de retour n’est pas définie.

Notes

Si la valeur de retour d’un front objet est affectée à un const_reference, l’objet queue ne peut pas être modifié. Si la valeur de retour d’un front objet est affectée à un reference, l’objet queue peut être modifié.

La fonction membre retourne un reference premier élément de la séquence contrôlée, qui doit être sansmpty.

Lorsqu’elle est compilée à l’aide de _ITERATOR_DEBUG_LEVEL la valeur 1 ou 2, une erreur d’exécution se produit si vous tentez d’accéder à un élément dans un élément vide queue. Consultez Itérateurs vérifiés pour plus d’informations.

Exemple

// queue_front.cpp
// compile with: /EHsc
#include <queue>
#include <iostream>

int main() {
   using namespace std;
   queue <int> q1;

   q1.push( 10 );
   q1.push( 20 );
   q1.push( 30 );

   queue <int>::size_type i;
   i = q1.size( );
   cout << "The queue length is " << i << "." << endl;

   int& ii = q1.back( );
   int& iii = q1.front( );

   cout << "The integer at the back of queue q1 is " << ii
        << "." << endl;
   cout << "The integer at the front of queue q1 is " << iii
        << "." << endl;
}

pop

Supprime un élément à l’avant de l’objet queue.

void pop();

Notes

Il queue doit être vide pour appliquer la fonction membre. Le haut de l’élément queue est la position occupée par l’élément le plus récemment ajouté et est le dernier élément à la fin du conteneur.

Exemple

// queue_pop.cpp
// compile with: /EHsc
#include <queue>
#include <iostream>

int main( )
{
   using namespace std;
   queue <int> q1, s2;

   q1.push( 10 );
   q1.push( 20 );
   q1.push( 30 );

   queue <int>::size_type i;
   i = q1.size( );
   cout << "The queue length is " << i << "." << endl;

   i = q1.front( );
   cout << "The element at the front of the queue is "
        << i << "." << endl;

   q1.pop( );

   i = q1.size( );
   cout << "After a pop the queue length is "
        << i << "." << endl;

   i = q1. front ( );
   cout << "After a pop, the element at the front of the queue is "
        << i << "." << endl;
}
The queue length is 3.
The element at the front of the queue is 10.
After a pop the queue length is 2.
After a pop, the element at the front of the queue is 20.

push

Ajoute un élément à l’arrière de l’objet queue.

void push(const Type& val);

Paramètres

val
Élément ajouté à l’arrière du queue.

Notes

Le dos de l’élément queue est la position occupée par l’élément le plus récemment ajouté et est le dernier élément à la fin du conteneur.

Exemple

// queue_push.cpp
// compile with: /EHsc
#include <queue>
#include <iostream>

int main( )
{
   using namespace std;
   queue <int> q1;

   q1.push( 10 );
   q1.push( 20 );
   q1.push( 30 );

   queue <int>::size_type i;
   i = q1.size( );
   cout << "The queue length is " << i << "." << endl;

   i = q1.front( );
   cout << "The element at the front of the queue is "
        << i << "." << endl;
}
The queue length is 3.
The element at the front of the queue is 10.

queue

Construit un objet queue qui est vide ou qui est une copie de l'objet conteneur de base.

queue();

explicit queue(const container_type& right);

Paramètres

right
Conteneur const dont la construction queue doit être une copie.

Notes

Le conteneur de base par défaut est queue deque. Vous pouvez également spécifier list en tant que conteneur de base, mais vous ne pouvez pas le spécifier vector, car il manque la fonction membre requise pop_front .

Exemple

// queue_queue.cpp
// compile with: /EHsc
#include <queue>
#include <vector>
#include <list>
#include <iostream>

int main( )
{
   using namespace std;

   // Declares queue with default deque base container
   queue <char> q1;

   // Explicitly declares a queue with deque base container
   queue <char, deque<char> > q2;

   // These lines don't cause an error, even though they
   // declares a queue with a vector base container
   queue <int, vector<int> > q3;
   q3.push( 10 );
   // but the following would cause an error because vector has
   // no pop_front member function
   // q3.pop( );

   // Declares a queue with list base container
   queue <int, list<int> > q4;

   // The second member function copies elements from a container
   list<int> li1;
   li1.push_back( 1 );
   li1.push_back( 2 );
   queue <int, list<int> > q5( li1 );
   cout << "The element at the front of queue q5 is "
        << q5.front( ) << "." << endl;
   cout << "The element at the back of queue q5 is "
        << q5.back( ) << "." << endl;
}
The element at the front of queue q5 is 1.
The element at the back of queue q5 is 2.

size

Retourne le nombre d'éléments d'un queue.

size_type size() const;

Valeur de retour

Longueur actuelle du queue.

Exemple

// queue_size.cpp
// compile with: /EHsc
#include <queue>
#include <iostream>

int main( )
{
   using namespace std;
   queue <int> q1, q2;
   queue <int>::size_type i;

   q1.push( 1 );
   i = q1.size( );
   cout << "The queue length is " << i << "." << endl;

   q1.push( 2 );
   i = q1.size( );
   cout << "The queue length is now " << i << "." << endl;
}
The queue length is 1.
The queue length is now 2.

size_type

Type entier non signé qui peut représenter le nombre d'éléments dans un queue.

typedef typename Container::size_type size_type;

Notes

Le type est un synonyme du size_type conteneur de base adapté par le queue.

Exemple

Consultez l’exemple pour queue::front obtenir un exemple de déclaration et d’utilisation size_type.

value_type

Type qui représente le type d'objet stocké en tant qu'élément dans un objet queue.

typedef typename Container::value_type value_type;

Notes

Le type est un synonyme du value_type conteneur de base adapté par le queue.

Exemple

// queue_value_type.cpp
// compile with: /EHsc
#include <queue>
#include <iostream>

int main( )
{
using namespace std;

   // Declares queues with default deque base container
   queue<int>::value_type AnInt;

   AnInt = 69;
   cout << "The value_type is AnInt = " << AnInt << endl;

   queue<int> q1;
   q1.push(AnInt);
   cout << "The element at the front of the queue is "
        << q1.front( ) << "." << endl;
}
The value_type is AnInt = 69
The element at the front of the queue is 69.

Voir aussi

Sécurité des threads dans la bibliothèque C++ Standard
Informations de référence sur la bibliothèque standard C++