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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::array::swap	- std::array::swap

Synopsis
	  void	 swap(	 array&	  other	  )   noexcept(/*   see	  below	  */);
       (since C++11)
									  (un-
       til C++20)
	  constexpr void swap( array&  other  )	 noexcept(/*  see  below  */);
       (since C++20)

	  Exchanges  the  contents  of the container with those	of other. Does
       not cause
	  iterators and	references to associate	with the other container.

Parameters
	  other	- container to exchange	the contents with

Return value
	  (none)

Exceptions
	  noexcept specification:
	  noexcept(noexcept(swap(std::declval<T&>(), std::declval<T&>())))
										 (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<T>)

	  For zero-sized arrays,
	  noexcept specification:
	  noexcept

Complexity
	  Linear in size of the	container.

Example
       // Run this code

	#include <array>
	#include <iostream>

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

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

	    auto it1 = a1.begin();
	    auto it2 = a2.begin();
	    int& ref1 =	a1[1];
	    int& ref2 =	a2[1];

	    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 iterators and references  stay  associated
       with their original
	    //	array,	e.g. `it1` still points	to element a1[0], `ref1` still
       refers to a1[1].
	}

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

	 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::array)	specializes the	std::swap algorithm
	  (C++11)		(function template)

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

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

home | help