##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# 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.

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

### [edit] Member types

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

### [edit] Member functions

(constructor) | constructs the `stack` (public member function) [edit]
(destructor) | destructs the `stack` (public member function) [edit]
operator= | assigns values to the container adaptor (public member function) [edit]
##### Element access
top | accesses the top element (public member function) [edit]
##### Capacity
empty | checks whether the underlying container is empty (public member function) [edit]
size | returns the number of elements (public member function) [edit]
##### Modifiers
push | inserts element at the top (public member function) [edit]
emplace (C++11) | constructs element in-place at the top (public member function) [edit]
pop | removes the top element (public member function) [edit]
swap | swaps the contents (public member function) [edit]
### Member objects
Container c | the underlying container (protected member object) [edit]

### [edit] Non-member functions

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

### [edit] Helper classes

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

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