Defined in header <algorithm> Defined in header <utility> |
(until C++11) (since C++11) | |
|---|---|---|
template< class T > void swap( T& a, T& b ); | (1) | |
template< class T2, std::size_t N > void swap( T2 (&a)[N], T2 (&b)[N]); | (2) | (since C++11) |
Exchanges the given values.
a and b. This overload does not participate in overload resolution unless std::is_move_constructible_v<T> && std::is_move_assignable_v<T> is true. (since C++17)
a and b. In effect calls std::swap_ranges(a, a+N, b). This overload does not participate in overload resolution unless std::is_swappable_v<T2> is true. (since C++17)
| a, b | - | the values to be swapped |
| Type requirements | ||
-T must meet the requirements of MoveAssignable and MoveConstructible. |
||
-T2 must meet the requirements of Swappable. |
||
(none).
| (none) | (until C++11) |
noexcept specification: noexcept( | (since C++11) |
noexcept specification: noexcept(noexcept(swap(*a, *b))) | (until C++17) |
noexcept specification: noexcept(std::is_nothrow_swappable_v<T2>) | (since C++17) |
std::swap may be specialized in namespace std for user-defined types, but such specializations are not found by ADL (the namespace std is not the associated namespace for the user-defined type). The expected way to make a user-defined type swappable is to provide a non-member function swap in the same namespace as the type: see Swappable for details.
The following overloads are already provided by the standard library:
|
(C++11) | specializes the std::swap algorithm (function template) |
|
(C++11) | specializes the std::swap algorithm (function template) |
|
(C++11) | specializes the std::swap algorithm (function template) |
|
(C++11) | specializes the std::swap algorithm (function template) |
|
(C++11) | specializes the std::swap algorithm (function template) |
|
(C++11) | specializes the std::swap algorithm (function template) |
specializes the std::swap algorithm (function template) |
|
|
(C++11) | specializes the std::swap algorithm (function template) |
specializes the std::swap algorithm (function template) |
|
|
(C++11) | specializes the std::swap algorithm (function template) |
specializes the std::swap algorithm (function template) |
|
specializes the std::swap algorithm (function template) |
|
specializes the std::swap algorithm (function template) |
|
specializes the std::swap algorithm (function template) |
|
specializes the std::swap algorithm (function template) |
|
specializes the std::swap algorithm (function template) |
|
|
(C++11) | specializes the std::swap algorithm (function template) |
|
(C++11) | specializes the std::swap algorithm (function template) |
|
(C++11) | specializes the std::swap algorithm (function template) |
|
(C++11) | specializes the std::swap algorithm (function template) |
specializes the std::swap algorithm (function template) |
|
specializes the std::swap algorithm (function template) |
|
specializes the std::swap algorithm (function template) |
|
|
(C++11) | specializes the std::swap() algorithm (function template) |
|
(C++11) | specializes the std::swap algorithm (function template) |
|
(C++11) | specializes the std::swap algorithm (function template) |
|
(C++11) | specializes the std::swap algorithm (function template) |
|
(C++11) | specializes the std::swap algorithm (function template) |
|
(C++11) | specializes the std::swap algorithm (function template) |
|
(C++11) | specializes the std::swap algorithm (function template) |
|
(C++11) | specializes the std::swap algorithm (function template) |
|
(C++11) | specializes the std::swap algorithm (function template) |
|
(C++11) | specializes the std::swap algorithm (function template) |
|
(C++11) | specializes the std::swap() algorithm (function template) |
|
(C++11) | specializes the std::swap algorithm (function template) |
|
(C++11) | specialization of std::swap for unique_lock (function template) |
|
(C++11) | specializes the std::swap algorithm (function template) |
|
(C++11) | specializes the std::swap algorithm (function template) |
|
(C++17) | specializes the std::swap algorithm (function) |
|
(C++17) | specializes the std::swap algorithm (function) |
|
(C++17) | specializes the std::swap algorithm (function) |
| swaps two paths (function) |
#include <algorithm>
#include <iostream>
int main()
{
int a = 5, b = 3;
// before
std::cout << a << ' ' << b << '\n';
std::swap(a,b);
// after
std::cout << a << ' ' << b << '\n';
}Output:
5 3 3 5
| swaps the elements pointed to by two iterators (function template) |
|
| swaps two ranges of elements (function template) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
http://en.cppreference.com/w/cpp/algorithm/swap