table of contents
        
      
      
    | std::queue::queue(3) | C++ Standard Libary | std::queue::queue(3) | 
NAME¶
std::queue::queue - std::queue::queue
Synopsis¶
 queue() : queue(Container()) { } (1) (since C++11)
  
   explicit queue( const Container& cont = Container() (until C++11)
  
   );
  
   explicit queue( const Container& cont ); (since C++11)
  
   explicit queue( Container&& cont ); (3) (since C++11)
  
   queue( const queue& other ); (4)
  
   queue( queue&& other ); (5) (since C++11)
  
   template< class InputIt > (6) (since C++23)
  
   queue( InputIt first, InputIt last );
  
   template< class Alloc > (7) (since C++11)
  
   explicit queue( const Alloc& alloc );
  
   template< class Alloc > (2) (8) (since C++11)
  
   queue( const Container& cont, const Alloc& alloc );
  
   template< class Alloc > (9) (since C++11)
  
   queue( Container&& cont, const Alloc& alloc );
  
   template< class Alloc > (10) (since C++11)
  
   queue( const queue& other, const Alloc& alloc );
  
   template< class Alloc > (11) (since C++11)
  
   queue( queue&& other, const Alloc& alloc );
  
   template< class InputIt, class Alloc >
  
   queue( InputIt first, InputIt last, const Alloc& (12) (since
    C++23)
  
   alloc );
  
   Constructs new underlying container of the container adaptor from a variety
    of data
  
   sources.
  
   1) Default constructor. Value-initializes the container.
  
   2) Copy-constructs the underlying container c with the contents of cont.
  
   This is also the default constructor.
  
   (until C++11)
  
   3) Move-constructs the underlying container c with std::move(cont).
  
   4) Copy constructor. The adaptor is copy-constructed with the contents of
    other.c.
  
   5) Move constructor. The adaptor is constructed with std::move(other.c).
  
   6) Constructs the underlying container c with the contents of the range
    [first,
  
   last). This overload participates in overload resolution only if InputIt
    satisfies
  
   LegacyInputIterator.
  
   7-12) These constructors participate in overload resolution only if
  
   std::uses_allocator<Container, Alloc>::value is true, that is, if the
    underlying
  
   container is an allocator-aware container (true for all standard library
    containers
  
   that can be used with queue).
  
   7) Constructs the underlying container using alloc as allocator, as if by
    c(alloc).
  
   8) Constructs the underlying container with the contents of cont and using
    alloc as
  
   allocator, as if by c(cont, alloc).
  
   9) Constructs the underlying container with the contents of cont using move
  
   semantics while utilizing alloc as allocator, as if by c(std::move(cont),
    alloc).
  
   10) Constructs the adaptor with the contents of other.c and using alloc as
  
   allocator, as if by c(other.c, alloc).
  
   11) Constructs the adaptor with the contents of other using move semantics
    while
  
   utilizing alloc as allocator, as if by c(std::move(other.c), alloc).
  
   12) Constructs the underlying container with the contents of the range
    [first, last)
  
   using alloc as allocator, as if by c(first, last, alloc). This overload
    participates
  
   in overload resolution only if InputIt satisfies LegacyInputIterator.
Parameters¶
 alloc - allocator to use for all memory allocations of the
  
   underlying container
  
   other - another container adaptor to be used as source to
  
   initialize the underlying container
  
   cont - container to be used as source to initialize the
  
   underlying container
  
   first, last - range of elements to initialize with
Type requirements¶
 -
  
   Alloc must meet the requirements of Allocator.
  
   -
  
   Container must meet the requirements of Container. The constructors taking an
  
   allocator parameter participate in overload resolution only if Container
    meets the
  
   requirements of AllocatorAwareContainer.
  
   -
  
   InputIt must meet the requirements of LegacyInputIterator.
Complexity¶
Same as the corresponding operation on the wrapped container.
Notes¶
 Feature-test macro: __cpp_lib_adaptor_iterator_pair_constructor
    (for overloads (6)
  
   and (12))
Example¶
// Run this code
  
   #include <queue>
  
   #include <deque>
  
   #include <iostream>
  
   int main()
  
   {
  
   std::queue<int> c1;
  
   c1.push(5);
  
   std::cout << c1.size() << '\n';
  
   std::queue<int> c2(c1);
  
   std::cout << c2.size() << '\n';
  
   std::deque<int> deq {3, 1, 4, 1, 5};
  
   std::queue<int> c3(deq); // overload (2)
  
   std::cout << c3.size() << '\n';
  
   # ifdef __cpp_lib_adaptor_iterator_pair_constructor
  
   const auto il = {2, 7, 1, 8, 2};
  
   std::queue<int> c4 { il.begin(), il.end() }; // overload (6), C++23
  
   std::cout << c4.size() << '\n';
  
   # endif
  
   }
Possible output:¶
 1
  
   1
  
   5
  
   5
  
   Defect reports
  
   The following behavior-changing defect reports were applied retroactively to
  
   previously published C++ standards.
  
   DR Applied to Behavior as published Correct behavior
  
   P0935R0 C++11 default constructor was explicit made implicit
See also¶
 operator= assigns values to the container adaptor
  
   (public member function)
| 2022.07.31 | http://cppreference.com |