std::stack::stack

From cppreference.com
explicit stack( const Container& cont = Container() );
explicit stack( const Container& cont );
(1) (until C++11)
(since C++11)
explicit stack( Container&& cont = Container() );
(2) (since C++11)
stack( const stack& other );
(3)
stack( stack&& other );
(4) (since C++11)
template< class Allocator >
explicit stack( const Allocator& alloc );
(5) (since C++11)
template< class Allocator >
stack( const Container& cont, const Allocator& alloc );
(6) (since C++11)
template< class Allocator >
stack( Container&& cont, const Allocator& alloc );
(7) (since C++11)
template< class Allocator >
stack( const stack& other, const Allocator& alloc );
(8) (since C++11)
template< class Allocator >
stack( stack&& other, const Allocator& alloc );
(9) (since C++11)

Constructs new underlying container of the container adaptor from a variety of data sources.

1) Copy-constructs the underlying container c with the contents of cont. This is also the default constructor (until C++11)

2) Move-constructs the underlying container c with std::move(cont). This is also the default constructor (since C++11)

3) Copy constructor. The adaptor is copy-constructed with the contents of other.c. (implicitly declared)

4) Move constructor. The adaptor is constructed with std::move(other.c). (implicitly declared)

The constructors 5..9 are only defined if std::uses_allocator<container_type, Alloc>::value == true, that is, if the underlying container is an allocator-aware container (true for all standard library containers).

5) Constructs the underlying container using alloc as allocator. Effectively calls c(alloc).

6) Constructs the underlying container with the contents of cont and using alloc as allocator. Effectively calls c(cont, alloc).

7) Constructs the underlying container with the contents of cont using move semantics while utilising alloc as allocator. Effectively calls c(std::move(cont), alloc).

8) Constructs the adaptor with the contents of other.c and using alloc as allocator. Effectively calls c(athor.c, alloc).

9) Constructs the adaptor with the contents of other using move semantics while utilising alloc as allocator. Effectively calls c(std::move(other.c), alloc).


Contents

[edit] 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


[edit] Complexity

1, 3, 5, 6, 8: linear in cont or other

2, 4, 7, 9: constant

[edit] Example

#include <stack>
#include <deque>
#include <iostream>
 
int main()
{
    std::stack<int> c1;
    c1.push(5);
    std::cout << c1.size() << '\n';
 
    std::stack<int> c2(c1);
    std::cout << c2.size() << '\n';
 
    std::deque<int> deq {3, 1, 4, 1, 5};
    std::stack<int> c3(deq);
    std::cout << c3.size() << '\n';
}

Output:

1
1
5

[edit] See also

assigns values to the container adaptor
(public member function)