|
| template<typename _Seq = _Sequence, typename _Requires = typename enable_if<is_default_constructible<_Seq>::value>::type> |
| | stack () |
| |
| template<typename _InputIterator , typename = _RequireInputIter<_InputIterator>> |
| | stack (_InputIterator __first, _InputIterator __last) |
| |
| template<typename _InputIterator , typename _Alloc , typename = _RequireInputIter<_InputIterator>, typename = _Uses<_Alloc>> |
| | stack (_InputIterator __first, _InputIterator __last, const _Alloc &__a) |
| |
| | stack (_Sequence &&__c) |
| |
| template<typename _Alloc , typename _Requires = _Uses<_Alloc>> |
| | stack (_Sequence &&__c, const _Alloc &__a) |
| |
| template<typename _Alloc , typename _Requires = _Uses<_Alloc>> |
| | stack (const _Alloc &__a) |
| |
| | stack (const _Sequence &__c) |
| |
| template<typename _Alloc , typename _Requires = _Uses<_Alloc>> |
| | stack (const _Sequence &__c, const _Alloc &__a) |
| |
| template<typename _Alloc , typename _Requires = _Uses<_Alloc>> |
| | stack (const stack &__q, const _Alloc &__a) |
| |
| template<__detail::__container_compatible_range< _Tp > _Rg> |
| | stack (from_range_t, _Rg &&__rg) |
| |
| template<__detail::__container_compatible_range< _Tp > _Rg, typename _Alloc > |
| | stack (from_range_t, _Rg &&__rg, const _Alloc &__a) |
| |
| template<typename _Alloc , typename _Requires = _Uses<_Alloc>> |
| | stack (stack &&__q, const _Alloc &__a) |
| |
| template<typename... _Args> |
| decltype(auto) | emplace (_Args &&... __args) |
| |
| bool | empty () const |
| |
| void | pop () |
| |
| void | push (const value_type &__x) |
| |
| void | push (value_type &&__x) |
| |
| template<__detail::__container_compatible_range< _Tp > _Rg> |
| void | push_range (_Rg &&__rg) |
| |
| size_type | size () const |
| |
| void | swap (stack &__s) noexcept(__is_nothrow_swappable< _Sequence >::value) |
| |
| reference | top () |
| |
| const_reference | top () const |
| |
|
| class | formatter< stack< _Tp, _Sequence >, char > |
| |
| class | formatter< stack< _Tp, _Sequence >, wchar_t > |
| |
|
template<typename _Tp1 , typename _Seq1 > |
| bool | operator< (const stack< _Tp1, _Seq1 > &, const stack< _Tp1, _Seq1 > &) |
| |
|
template<typename _Tp1 , three_way_comparable _Seq1> |
| compare_three_way_result_t< _Seq1 > | operator<=> (const stack< _Tp1, _Seq1 > &, const stack< _Tp1, _Seq1 > &) |
| |
|
template<typename _Tp1 , typename _Seq1 > |
| bool | operator== (const stack< _Tp1, _Seq1 > &, const stack< _Tp1, _Seq1 > &) |
| |
template<typename _Tp, typename _Sequence = deque<_Tp>>
class std::stack< _Tp, _Sequence >
A standard container giving FILO behavior.
- Template Parameters
-
| _Tp | Type of element. |
| _Sequence | Type of underlying sequence, defaults to deque<_Tp>. |
Meets many of the requirements of a container, but does not define anything to do with iterators. Very few of the other standard container interfaces are defined.
This is not a true container, but an adaptor. It holds another container, and provides a wrapper interface to that container. The wrapper is what enforces strict first-in-last-out stack behavior.
The second template parameter defines the type of the underlying sequence/container. It defaults to std::deque, but it can be any type that supports back, push_back, and pop_back, such as std::list, std::vector, or an appropriate user-defined type.
Members not found in normal containers are container_type, which is a typedef for the second Sequence parameter, and push, pop, and top, which are standard stack/FILO operations.
Definition at line 107 of file stl_stack.h.