std::swap
From cppreference.com
(until C++11) (since C++11) |
||
template< class T >
void swap( T& a, T& b ); |
(1) | |
template< class T2, size_t N >
void swap( T2 (&a)[N], T2 (&b)[N]); |
(2) | (since C++11) |
Exchanges the given values.
1) Swaps the values a
and b
.
2) Swaps the arrays a
and b
. In effect calls std::swap_ranges(a, a+N, b).
Contents |
[edit] Parameters
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 .
|
[edit] Return value
(none)
[edit] Exceptions
1)
noexcept specification: (since C++11)
2)
noexcept(noexcept(
std::is_nothrow_move_constructible<T>::value && |
||
[edit] Complexity
1) Constant
2) Linear in N
[edit] Specializations
Both custom specializations and overloads of the std::swap algorithm are allowed, but the overloads are generally preferred since specializations of a function template aren't allowed for template classes. Library functions always use the user-provided overloads when swapping, if they are found by argument-dependent lookup (as per Swappable
concept).
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) |
|
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) |
|
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) |
|
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) |
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) |
[edit] Example
Output:
5 3 3 5
[edit] See also
swaps the elements pointed to by two iterators (function template) |
|
swaps two ranges of elements (function template) |