0% found this document useful (0 votes)
26 views3 pages

C++ std::stack Overview and Usage

The std::stack class in C++ is a container adaptor that implements a last-in, first-out (LIFO) data structure, typically using std::deque as the underlying container. It provides essential member functions for element access, capacity management, and modification, while ensuring that the underlying container meets specific requirements. The class template allows for customization of the stored element type and the container type used.

Uploaded by

hungrypayne2
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
26 views3 pages

C++ std::stack Overview and Usage

The std::stack class in C++ is a container adaptor that implements a last-in, first-out (LIFO) data structure, typically using std::deque as the underlying container. It provides essential member functions for element access, capacity management, and modification, while ensuring that the underlying container meets specific requirements. The class template allows for customization of the stored element type and the container type used.

Uploaded by

hungrypayne2
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

std::stack [Link]

com/w/cpp/container/stack
[Link]
C++

Containers library

std::stack

Defined in header <stack>

template<
class T,
class Container = std::deque<T>
> class stack;

The std::stack class is a container adaptor that gives the programmer the functionality of a stack -
specifically, a LIFO (last-in, first-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.
Contain - The type of the underlying container to use to store the elements. The container must satisfy
er 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 (including std::vector<bool>), std::deque and std:
:list satisfy these requirements. By default, if no container class is specified for a particular
stack class instantiation, the standard container std::deque is used.

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 objects
Member name Definition

the underlying container


Container c
(protected member object)

Member functions
constructs the stack
(constructor)
(public member function)

destructs the stack


(destructor)
(public member function)

assigns values to the container adaptor


operator=
(public member function)

Element access

accesses the top element


top
(public member function)

Capacity

checks whether the container adaptor is empty


empty
(public member function)

returns the number of elements


size
(public member function)

Modifiers

inserts element at the top


push
(public member function)

push_range inserts a range of elements at the top


(C++23) (public member function)

emplace constructs element in-place at the top


(C++11) (public member function)

removes the top element


pop
(public member function)

swap swaps the contents


(C++11) (public member function)

Non-member functions
operator==operator!=operator<operator<=operator>operator>=operator<=> lexicographically compares the valu
(C++20) (function template)

std::swap(std::stack) specializes the std::swap algorith


(C++11) (function template)

Helper classes
std::uses_allocator<std::stack> specializes the std::uses_allocator type trait
(C++11) (class template specialization)

Deduction guides (since C++17)


Notes

Feature-test macro Value Std Feature

__cpp_lib_containers_ranges 202202L (C++23) Ranges construction and insertion for containers

Example

This section is incomplete


Reason: no example

Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++
standards.

DR Applied to Behavior as published

LWG 307 C++98 Container could not be std::vector<bool>

See also
dynamic contiguous array
vector
(class template)

space-efficient dynamic bitset


vector<bool>
(class template specialization)

double-ended queue
deque
(class template)

doubly-linked list
list
(class template)

You might also like