std::queue<T,Container>::queue
Depuis fr.cppreference.net
queue() : queue(Container()) {}
|
(1) | (depuis C++11) |
explicit queue( const Container& cont = Container() );
|
(2) | (jusqu'à C++11) |
explicit queue( const Container& cont );
|
(depuis C++11) | |
explicit queue( Container&& cont );
|
(3) | (depuis C++11) |
queue( const queue& other );
|
(4) | (déclaré implicitement) |
queue( queue&& other );
|
(5) | (depuis C++11) (déclaré implicitement) |
template< class InputIt >
queue( InputIt first, InputIt last );
|
(6) | (depuis C++23) |
template< class Alloc >
explicit queue( const Alloc& alloc );
|
(7) | (depuis C++11) |
template< class Alloc >
queue( const Container& cont, const Alloc& alloc );
|
(8) | (depuis C++11) |
template< class Alloc >
queue( Container&& cont, const Alloc& alloc );
|
(9) | (depuis C++11) |
template< class Alloc >
queue( const queue& other, const Alloc& alloc );
|
(10) | (depuis C++11) |
template< class Alloc >
queue( queue&& other, const Alloc& alloc );
|
(11) | (depuis C++11) |
template< class InputIt, class Alloc >
queue( InputIt first, InputIt last, const Alloc& alloc );
|
(12) | (depuis C++23) |
template< container-compatible-range<T> R>
queue( std::from_range_t, R&& rg );
|
(13) | (depuis C++23) |
template< container-compatible-range<T> R, class Alloc >
queue( std::from_range_t, R&& rg, const Alloc& alloc );
|
(14) | (depuis C++23) |
Construit un nouveau conteneur sous-jacent de l'adaptateur de conteneur à partir de diverses sources de données.
1) Constructeur par défaut. Initialise par valeur le conteneur.
2) Copie-construit le conteneur sous-jacent
c avec le contenu de cont. C'est aussi le constructeur par défaut.(jusqu'à C++11)3) Déplace-construit le conteneur sous-jacent
c avec std::move(cont).6) Construit le conteneur sous-jacent
c avec le contenu de la plage [first, last). Cette surcharge participe à la résolution de surcharge seulement si InputIt satisfait LegacyInputIterator.7-12) Ces constructeurs participent à la résolution de surcharge seulement si
std::uses_allocator<Container, Alloc>::value est true, c'est-à-dire si le conteneur sous-jacent est un conteneur compatible allocateur (vrai pour tous les conteneurs de la bibliothèque standard qui peuvent être utilisés avec queue).7) Construit le conteneur sous-jacent en utilisant
alloc comme allocateur, comme par c(alloc).8) Construit le conteneur sous-jacent avec le contenu de
cont et en utilisant alloc comme allocateur, comme par c(cont, alloc).9) Construit le conteneur sous-jacent avec le contenu de
cont en utilisant la sémantique de déplacement tout en utilisant alloc comme allocateur, comme par c(std::move(cont), alloc).10) Construit l'adaptateur avec le contenu de
other.c et en utilisant alloc comme allocateur, comme par c(other.c, alloc).11) Construit l'adaptateur avec le contenu de
other en utilisant la sémantique de déplacement tout en utilisant alloc comme allocateur, comme par c(std::move(other.c), alloc).12) Construit le conteneur sous-jacent avec le contenu de la plage
[first, last) en utilisant alloc comme allocateur, comme par c(first, last, alloc). Cette surcharge participe à la résolution de surcharge seulement si InputIt satisfait LegacyInputIterator.13) Construit le conteneur sous-jacent avec
ranges::to<Container>(std::forward<R>(rg)).14) Construit le conteneur sous-jacent avec
ranges::to<Container>(std::forward<R>(rg), alloc).Paramètres
| alloc | - | allocateur à utiliser pour toutes les allocations de mémoire du conteneur sous-jacent |
| other | - | un autre adaptateur de conteneur à utiliser comme source pour initialiser le conteneur sous-jacent |
| cont | - | conteneur à utiliser comme source pour initialiser le conteneur sous-jacent |
| first, last | - | la paire d'itérateurs définissant la plage source des éléments à initialiser |
| rg | - |
une
plage compatible avec les conteneurs
, c'est-à-dire une
input_range
dont les éléments sont convertibles en
T
|
| Exigences de type | ||
-
Alloc
doit satisfaire aux exigences de
Allocator
.
|
||
-
Container
doit satisfaire aux exigences de
Container
. Les constructeurs prenant un paramètre d'allocateur participent à la résolution de surcharge seulement si
Container
satisfait aux exigences de
AllocatorAwareContainer
.
|
||
-
InputIt
doit satisfaire aux exigences de
LegacyInputIterator
.
|
||
Complexité
Identique à l'opération correspondante sur le conteneur encapsulé.
Notes
| Macro de test de fonctionnalité | Valeur | Std | Fonctionnalité |
|---|---|---|---|
__cpp_lib_adaptor_iterator_pair_constructor
|
202106L
|
(C++23) | Constructeurs de paire d'itérateurs pour std::queue et std::stack ; surcharges ( 6 ) et ( 12 ) |
__cpp_lib_containers_ranges
|
202202L
|
(C++23) | Construction et insertion compatibles avec les gammes ; surcharges ( 13 ) et ( 14 ) |
Exemple
Exécuter ce code
#include <cassert> #include <deque> #include <iostream> #include <memory> #include <ranges> #include <queue> int main() { std::queue<int> c1; c1.push(5); assert(c1.size() == 1); std::queue<int> c2(c1); assert(c2.size() == 1); std::deque<int> deq{3, 1, 4, 1, 5}; std::queue<int> c3(deq); // surcharge (2) assert(c3.size() == 5); # ifdef __cpp_lib_adaptor_iterator_pair_constructor const auto il = {2, 7, 1, 8, 2}; std::queue<int> c4{il.begin(), il.end()}; // C++23, (6) assert(c4.size() == 5); # endif # if __cpp_lib_containers_ranges >= 202202L // C++23, surcharge (13) auto c5 = std::queue(std::from_range_t, std::ranges::iota(0, 42)); assert(c5.size() == 42); // même effet avec la syntaxe pipe, utilise en interne la surcharge (13) auto c6 = std::ranges::iota(0, 42) | std::ranges::to<std::queue>(); assert(c6.size() == 42); std::allocator<int> alloc; // C++23, surcharge (14) auto c7 = std::queue(std::from_range_t, std::ranges::iota(0, 42), alloc); assert(c7.size() == 42); // même effet avec la syntaxe pipe, utilise en interne la surcharge (14) auto c8 = std::ranges::iota(0, 42) | std::ranges::to<std::queue>(alloc); assert(c8.size() == 42); # endif }
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.
| DR | Appliqué à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| P0935R0 | C++11 | default constructor was explicit | made implicit |
Voir aussi
|
assigne des valeurs à l'adaptateur de conteneur
(fonction membre publique) |