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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::forward_list::swap - std::forward_list::swap

Synopsis
	  void	swap( forward_list& other );				(since
       C++11)
								       (until
       C++17)
	  void swap( forward_list& 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. It	is unspecified whether
       an iterator
	  holding the past-the-end value in this container will	refer to  this
       or the other
	  container after the operation.

	  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 <forward_list>

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

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

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

home | help