Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::stack(3)		      C++ Standard Libary		 std::stack(3)

NAME
       std::stack - std::stack

Synopsis
	  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 program-
       mer 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  program  is  ill-
       formed if T is not
		      the same type as Container::value_type.
		      The type of the underlying container to use to store the
       elements. The
		      container	 must satisfy the requirements of SequenceCon-
       tainer.
		      Additionally, it must provide  the  following  functions
       with the	usual
		      semantics:
			* back(), e.g.,	std::vector::back(),
	  Container -	* push_back(), e.g., std::deque::push_back(),
			* pop_back(), e.g., std::list::pop_back().

		      The standard containers std::vector (including std::vec-
       tor<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
	  Container c the underlying container
		      (protected member	object)

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 container adaptor is	empty
			(public	member function)
	  size		returns	the number of elements
			(public	member function)

Modifiers
	  push		inserts	element	at the top
			(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)
	  pop		removes	the top	element
			(public	member function)
	  swap		swaps the contents
	  (C++11)	(public	member function)

Non-member functions
	  operator==
	  operator!=
	  operator<
	  operator<=		 lexicographically  compares the values	of two
       stacks
	  operator>		(function template)
	  operator>=
	  operator<=>
	  (C++20)
	  std::swap(std::stack)	specializes the	std::swap algorithm
	  (C++11)		(function template)

Helper classes
	  std::uses_allocator<std::stack> specializes the  std::uses_allocator
       type trait
	  (C++11)			  (class template specialization)
	  std::formatter<std::stack>	  formatting support for std::stack
	  (C++23)			  (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 retroac-
       tively to
	  previously published C++ standards.

	     DR	   Applied to	 Behavior  as  published	       Correct
       behavior
	  LWG 307  C++98      Container	could not be	  allowed
			      std::vector<bool>
	  LWG  2566  C++98	Missing	the requirement	for ill-formed if T is
       not the same type
			      Container::value_type		as	  Con-
       tainer::value_type

See also
	  vector       dynamic contiguous array
		       (class template)
	  vector<bool> space-efficient dynamic bitset
		       (class template specialization)
	  deque	       double-ended queue
		       (class template)
	  list	       doubly-linked list
		       (class template)

Category:
	    * Todo no example

http://cppreference.com		  2024.06.10			 std::stack(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::stack&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help