# std::stack

From cppreference.com
< cpp‎ | container

Defined in header `<stack>` |  |
template< class T, class Container = std::deque<T> > class stack; |  |

The `std::stack` class is a container adapter that gives the programmer the functionality of a stack - specifically, a FILO (first-in, last-out) data structure.

The class template acts as a wrapper to the underlying container - only a specific set of functions is provided. The stack pushes and pops the element from the back of the underlying container, known as the top of the stack.

### Template parameters

T | - | The type of the stored elements. The behavior is undefined if `T` is not the same type as `Container::value_type`. (since C++17)

Container

-

The type of the underlying container to use to store the elements. The container must satisfy the requirements of `SequenceContainer`. Additionally, it must provide the following functions with the usual semantics:

- `back()`
- `push_back()`
- `pop_back()`

The standard containers std::vector, std::deque and std::list satisfy these requirements.

### Member types

Member type | Definition
`container_type` | `Container`
`value_type` | `Container::value_type`
`size_type` | `Container::size_type`
`reference` | `Container::reference`
`const_reference` | `Container::const_reference`

### Member functions

(constructor) | constructs the `stack` (public member function)
(destructor) | destructs the `stack` (public member function)
operator= | assigns values to the container adaptor (public member function)

##### Element access

top | accesses the top element (public member function)

##### Capacity

empty | checks whether the underlying container is empty (public member function)
size | returns the number of elements (public member function)

##### Modifiers

push | inserts element at the top (public member function)
emplace (C++11) | constructs element in-place at the top (public member function)
pop | removes the top element (public member function)
swap | swaps the contents (public member function)

### Member objects

Container c | the underlying container (protected member object)

### Non-member functions

operator==operator!=operator<operator<=operator>operator>= | lexicographically compares the values in the stack (function template)
std::swap(std::stack) | specializes the std::swap algorithm (function template)

### Helper classes

std::uses_allocator<std::stack> (C++11) | specializes the std::uses_allocator type trait (function template)

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/container/stack&oldid=83656"