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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::deque::swap	- std::deque::swap

Synopsis
	  void swap( deque& other );				(until C++17)
	  void swap( deque& other ) noexcept(/*	see below */);	(since C++17)

	  Exchanges  the  contents  of the container with those	of other. Does
       not invoke any
	  move,	copy, or swap operations on individual elements.

	  All iterators	and references remain valid. The end() iterator	is in-
       validated.

	  If	      std::allocator_traits<allocator_type>::propagate_on_con-
       tainer_swap::value
	  is true, then	the allocators are exchanged using an unqualified call
       to	(since
	  non-member swap. Otherwise, they are not swapped (and	if get_alloca-
       tor() !=	  C++11)
	  other.get_allocator(), the behavior is undefined).

Parameters
	  other	- container to exchange	the contents with

Return value
	  (none)

Exceptions
	  (none)
       (until C++17)
	  noexcept						specification:
       (since C++17)
	  noexcept(std::allocator_traits<Allocator>::is_always_equal::value)

Complexity
	  Constant.

Example
       // Run this code

	#include <iostream>
	#include <deque>

	template<class Os, class Co>
	Os& operator<<(Os& os, const Co& co)
	{
	    os << '{';
	    for	(auto const& i : co)
		os << '	' << i;
	    return os << " } ";
	}

	int main()
	{
	    std::deque<int> a1{1, 2, 3}, a2{4, 5};

	    auto it1 = std::next(a1.begin());
	    auto it2 = std::next(a2.begin());

	    int& ref1 =	a1.front();
	    int& ref2 =	a2.front();

	    std::cout << a1 << a2 << *it1 << ' ' << *it2 << ' '	<< ref1	<< ' '
       << ref2 << '\n';
	    a1.swap(a2);
	    std::cout << a1 << a2 << *it1 << ' ' << *it2 << ' '	<< ref1	<< ' '
       << ref2 << '\n';

	    // Note that after swap the	iterators and references stay  associ-
       ated with their
	    //	original elements, e.g.	it1 that pointed to an element in 'a1'
       with value 2
	    // still points to the same	element, though	this element was moved
       into 'a2'.
	}

Output:
	{ 1 2 3	} { 4 5	} 2 5 1	4
	{ 4 5 }	{ 1 2 3	} 2 5 1	4

See also
	  std::swap(std::deque)	specializes the	std::swap algorithm
				(function template)

Category:
	    * conditionally noexcept

http://cppreference.com		  2024.06.10		   std::deque::swap(3)

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

home | help