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

FreeBSD Manual Pages

  
 
  

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

NAME
       std::queue::swap	- std::queue::swap

Synopsis
	  void swap( queue& 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 <concepts>
	#include <queue>
	#include <string>
	#include <string_view>
	#include <vector>

	template<typename Adaptor>
	requires (std::ranges::input_range<typename Adaptor::container_type>)
	void print(std::string_view name, const	Adaptor& adaptor)
	{
	    struct Printer : Adaptor //	to use protected Adaptor::Container c;
	    {
		void print(std::string_view name) const
		{
		    std::cout << name << " [" << std::size(this->c) << "]: ";
		    for	(auto const& elem : this->c)
			std::cout << elem << ' ';
		    std::cout << '\n';
		}
	    };

	    static_cast<Printer	const&>(adaptor).print(name);
	}

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

	    std::queue s1(std::move(v1));
	    std::queue s2(std::move(v2));

	    print("s1",	s1);
	    print("s2",	s2);

	    s1.swap(s2);

	    print("s1",	s1);
	    print("s2",	s2);
	}

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

Category:
	    * conditionally noexcept

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

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

home | help