La
std::queue
est un
adaptateur de conteneur
qui fournit les fonctionnalités d'une
file
- plus précisément, une structure de données FIFO (premier entré, premier sorti).
Le modèle de classe agit comme un wrapper pour le conteneur sous-jacent - seul un ensemble spécifique de fonctions est fourni. La queue pousse les éléments à l'arrière du conteneur sous-jacent et les retire de l'avant.
Toutes les fonctions membres de
std::queue
sont
constexpr
: il est possible de créer et d'utiliser des objets
std::queue
lors de l'évaluation d'une expression constante.
Cependant, les objets
std::queue
ne peuvent généralement pas être
constexpr
, car toute allocation de mémoire dynamique doit être libérée lors de la même évaluation d'expression constante.
Le type des éléments stockés. Le programme est mal formé si
T
n'est pas du même type que
Container::value_type
.
Container
-
Le type du conteneur sous-jacent utilisé pour stocker les éléments. Le conteneur doit satisfaire aux exigences de
SequenceContainer
. De plus, il doit fournir les fonctions suivantes avec la
sémantique habituelle
:
#include <cassert>#include <iostream>#include <queue>int main(){
std::queue<int> q;
q.push(0);// back ajoute 0
q.push(1);// q = 0 1
q.push(2);// q = 0 1 2
q.push(3);// q = 0 1 2 3assert(q.front()==0);assert(q.back()==3);assert(q.size()==4);
q.pop();// supprime l'élément avant, 0assert(q.size()==3);// Affiche et supprime tous les éléments. Notez que std::queue ne// prend pas en charge begin()/end(), donc une boucle for à portée ne peut pas être utilisée.std::cout<<"q: ";for(;!q.empty(); q.pop())std::cout<< q.front()<<' ';std::cout<<'\n';assert(q.size()==0);}
Sortie :
q: 1 2 3
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.