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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::stack::swap	- std::stack::swap

Synopsis
	  void swap( stack& other ) noexcept(/*	see below */);	(since C++11)

	  Exchanges the	contents of the	container adaptor with those of	other.
       Effectively
	  calls	using std::swap; swap(c, other.c);

Parameters
	  other	- container adaptor to exchange	the contents with

Return value
	  (none)

Exceptions
	  noexcept specification:
	  noexcept(noexcept(swap(c,				    other.c)))
       (since C++11)
										 (un-
       til C++17)
	  In the expression above, the identifier swap is  looked  up  in  the
       same
	  manner as the	one used by the	C++17 std::is_nothrow_swappable	trait.
	  noexcept						specification:
       (since C++17)
	  noexcept(std::is_nothrow_swappable_v<Container>)

Complexity
	  Same as underlying container (typically constant).

Notes
	  Some implementations (e.g. libc++) provide the swap member  function
       as an extension
	  to pre-C++11 modes.

Example
       // Run this code

	#include <iostream>
	#include <stack>
	#include <string>
	#include <vector>

	template <typename Stack>
	void print(Stack stack /* pass by value	*/, int	id)
	{
	    std::cout << "s" <<	id << "	[" << stack.size() << "]: ";
	    for	(; !stack.empty(); stack.pop())
		std::cout << stack.top() << ' ';
	    std::cout << (id > 1 ? "\n\n" : "\n");
	}

	int main()
	{
	    std::vector<std::string>
		v1{"1","2","3","4"},
		v2{"","B","","D",""};

	    std::stack s1{std::move(v1)};
	    std::stack s2{std::move(v2)};

	    print(s1, 1);
	    print(s2, 2);

	    s1.swap(s2);

	    print(s1, 1);
	    print(s2, 2);
	}

Output:
	s1 [4]:	4 3 2 1
	s2 [5]:	 D  B

	s1 [5]:	 D  B
	s2 [4]:	4 3 2 1

	 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 2456 C++11      the noexcept specification is ill-formed made to
       work

See also
	  std::swap(std::stack)	specializes the	std::swap algorithm
	  (C++11)		(function template)

http://cppreference.com		  2022.07.31		   std::stack::swap(3)

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

home | help