# <stack> <stack> # `` * * * Include the [STL](https://docs.qualcomm.com/doc/80-N3040-23/topic/cpp_index.html#STL) standard header **``** to define the template class `stack` and several supporting templates. namespace std { template class stack; // TEMPLATE FUNCTIONS template bool operator==(const stack& left, const stack& right); template bool operator!=(const stack& left, const stack& right); template bool operator<(const stack& left, const stack& right); template bool operator>(const stack& left, const stack& right); template bool operator<=(const stack& left, const stack& right); template bool operator>=(const stack& left, const stack& right); } // namespace stdCopy to clipboard ## `operator!=` template bool operator!=(const stack & left, const stack & right);Copy to clipboard The template function returns `!(left == right)`. ## `operator==` template bool operator==(const stack & left, const stack & right);Copy to clipboard The template function overloads `operator==` to compare two objects of template class [`stack`](https://docs.qualcomm.com/doc/80-N3040-23/topic/cpp_stack.html#stack). The function returns `left.c == right.c`. ## `operator<` template bool operator<(const stack & left, const stack & right);Copy to clipboard The template function overloads `operator<` to compare two objects of template class [`stack`](https://docs.qualcomm.com/doc/80-N3040-23/topic/cpp_stack.html#stack). The function returns `left.c < right.c`. ## `operator<=` template bool operator<=(const stack & left, const stack & right);Copy to clipboard The template function returns `!(right < left)`. ## `operator>` template bool operator>(const stack & left, const stack & right);Copy to clipboard The template function returns `right < left`. ## `operator>=` template bool operator>=(const stack & left, const stack & right);Copy to clipboard The template function returns `!(left < right)`. ## `stack` template > class stack { public: typedef Container container_type; typedef typename Container::value_type value_type; typedef typename Container::size_type size_type; typedef typename Container::reference reference; typedef typename Container::const_reference const_reference; stack(); explicit stack(const container_type& cont); bool empty() const; size_type size() const; reference top(); const_reference top() const; void push(const value_type& val); void pop(); protected: Container c; };Copy to clipboard The template class describes an object that controls a varying-length sequence of elements. The object allocates and frees storage for the sequence it controls through a protected object named **`c`**, of class `Container`. The type `Ty` of elements in the controlled sequence must match `value_type`. An object of class `Container` must supply several public members defined the same as for `deque`, `list`, and `vector` (all of which are suitable candidates for class `Container`). The required members are: typedef Ty value_type; typedef T0 size_type; typedef T1 reference; typedef T2 const_reference; Container(); bool empty() const; size_type size() const; value_type& back(); const value_type& back() const; void push_back(const value_type& val); void pop_back(); bool operator==(const Container& cont) const; bool operator!=(const Container& cont) const; bool operator<(const Container& cont) const; bool operator>(const Container& cont) const; bool operator<=(const Container& cont) const; bool operator>=(const Container& cont) const;Copy to clipboard Here, `T0`, `T1`, and `T2` are unspecified types that meet the stated requirements. ### `stack::const_reference` typedef typename Container::const_reference const_reference;Copy to clipboard The type is a synonym for `Container::const_reference`. ### `stack::container_type` typedef Container container_type;Copy to clipboard The type is a synonym for the template parameter `Container`. ### `stack::empty` bool empty() const;Copy to clipboard The member function returns true for an empty controlled sequence. ### `stack::pop` void pop();Copy to clipboard The member function removes the last element of the controlled sequence, which must be non-empty. ### `stack::push` void push(const Ty& val);Copy to clipboard The member function inserts an element with value `val` at the end of the controlled sequence. ### `stack::reference` typedef typename Container::reference reference;Copy to clipboard The type is a synonym for `Container::reference`. ### `stack::size` size_type size() const;Copy to clipboard The member function returns the length of the controlled sequence. ### `stack::size_type` typedef typename Container::size_type size_type;Copy to clipboard The type is a synonym for `Container::size_type`. ### `stack::stack` stack(); explicit stack(const container_type& cont);Copy to clipboard The first constructor initializes the stored object with `c()`, to specify an empty initial controlled sequence. The second constructor initializes the stored object with `c(cont)`, to specify an initial controlled sequence that is a copy of the sequence controlled by `cont`. ### `stack::top` reference top(); const_reference top() const;Copy to clipboard The member function returns a reference to the last element of the controlled sequence, which must be non-empty. ### `stack::value_type` typedef typename Container::value_type value_type;Copy to clipboard The type is a synonym for `Container::value_type`. * * * See also the **[Table of Contents](https://docs.qualcomm.com/doc/80-N3040-23/topic/cpp_index.html#Table%20of%20Contents)** and the **[Index](https://docs.qualcomm.com/doc/80-N3040-23/topic/_cpp_index.html)**. *[Copyright](https://docs.qualcomm.com/doc/80-N3040-23/topic/cpp_crit_pjp.html) © 1992-2006by P.J. Plauger. Portions derived from work[copyright](https://docs.qualcomm.com/doc/80-N3040-23/topic/cpp_crit_hp.html) © 1994by Hewlett-Packard Company. All rights reserved.* Last Published: Oct 06, 2026 Previous Topic Next Topic