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_back
et pop_front
.list
deque
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
, queue
et 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 lastack
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 etback
auxfront
éléments de cette façon est la raison d’utiliser laqueue
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++