std::swap
Definido en el archivo de encabezado <algorithm>
|
(hasta C++11) |
|
Definido en el archivo de encabezado <utility>
|
(desde C++11) |
|
Definido en el archivo de encabezado <string_view>
|
(desde C++17) |
|
(1) | ||
template< class T > void swap( T& a, T& b ); |
(hasta C++11) | |
template< class T > void swap( T& a, T& b ) noexcept(/* véase más abajo */); |
(desde C++11) (hasta C++20) |
|
template< class T > constexpr void swap( T& a, T& b ) noexcept(/* véase más abajo */); |
(desde C++20) | |
(2) | ||
template< class T2, std::size_t N > void swap( T2 (&a)[N], T2 (&b)[N]) noexcept(/* véase más abajo */); |
(desde C++11) (hasta C++20) |
|
template< class T2, std::size_t N > constexpr void swap( T2 (&a)[N], T2 (&b)[N]) noexcept(/* véase más abajo */); |
(desde C++20) | |
Intercambia los valores dados.
a
y b
. Esta sobrecarga no participa en la resolución de sobrecarga a menos que std::is_move_constructible_v<T> && std::is_move_assignable_v<T> sea true. (desde C++17)a
y b
. Efectivamente llama a std::swap_ranges(a, a+N, b). Esta sobrecarga no participa en la resolución de sobrecarga a menos que std::is_swappable_v<T2> sea true. (desde C++17)Contenido |
[editar] Parámetros
a, b | - | Los valores a ser intercambiados. |
Requerimientos de tipo | ||
-T debe satisfacer los requerimientos de MoveAssignable y MoveConstructible.
| ||
-T2 debe satisfacer los requerimientos de Swappable.
|
[editar] Valor de retorno
(Ninguno)
[editar] Excepciones
(Ninguna) |
(hasta C++11) | ||||||
Especificación noexcept: (desde C++11)
|
(desde C++11) |
La búsqueda del identificador swap en la especificación de excepción encuentra esta plantilla de función además de lo que se encuentre por las reglas de búsqueda habituales, lo que hace la especificación de excepción equivalente a C++17 std::is_nothrow_swappable.
|
(desde C++11) (hasta C++17) |
(desde C++17) |
[editar] Complejidad
[editar] Especializaciones
|
(hasta C++20) |
La manera esperada de hacer intercambiable a un tipo definido por el programa es proporcionar una función no miembro swap
en el mismo espacio de nombres que el tipo: véase Swappable para más detalles.
Las siguientes sobrecargas ya se proporcionan por la biblioteca estándar:
(C++11) |
Especializa el algoritmo std::swap. (plantilla de función) |
(C++11) |
Especializa el algoritmo std::swap. (plantilla de función) |
(C++11) |
Especializa el algoritmo std::swap. (plantilla de función) |
(C++11) |
Especializa el algoritmo std::swap. (plantilla de función) |
(C++11) |
Especializa el algoritmo std::swap. (plantilla de función) |
(C++11) |
Especializa el algoritmo std::swap. (plantilla de función) |
Especializa el algoritmo std::swap (plantilla de función) | |
Especializa el algoritmo std::swap. (plantilla de función) | |
Especializa el algoritmo std::swap. (plantilla de función) | |
Especializa el algoritmo std::swap. (plantilla de función) | |
Especializa el algoritmo std::swap. (plantilla de función) | |
Especializa el algoritmo std::swap. (plantilla de función) | |
Especializa el algoritmo std::swap. (plantilla de función) | |
Especializa el algoritmo std::swap. (plantilla de función) | |
Especializa el algoritmo std::swap. (plantilla de función) | |
Especializa el algoritmo std::swap. (plantilla de función) | |
Especializa el algoritmo std::swap. (plantilla de función) | |
Especializa el algoritmo std::swap. (plantilla de función) | |
Especializa el algoritmo std::swap. (plantilla de función) | |
Especializa el algoritmo std::swap. (plantilla de función) | |
Especializa el algoritmo std::swap. (plantilla de función) | |
Especializa el algoritmo std::swap. (plantilla de función) | |
Especializa el algoritmo std::swap. (plantilla de función) | |
(C++11) |
Especializa el algoritmo std::swap. (plantilla de función) |
Especializa el algoritmo std::swap. (plantilla de función) | |
Especializa el algoritmo std::swap. (plantilla de función) | |
Especializa el algoritmo std::swap. (plantilla de función) | |
Especializa el algoritmo std::swap. (plantilla de función) | |
Especializa el algoritmo std::swap. (plantilla de función) | |
Especializa el algoritmo the std::swap. (plantilla de función) | |
Especializa el algoritmo the std::swap. (plantilla de función) | |
Especializa el algoritmo the std::swap. (plantilla de función) | |
Especializa el algoritmo std::swap . (plantilla de función) | |
(C++11) |
Especializa el algoritmo std::swap. (plantilla de función) |
Especializa el algoritmo std::swap. (plantilla de función) | |
(C++11) |
Especializa el algoritmo std::swap. (función) |
Especialización de std::swap para unique_lock (plantilla de función) | |
(C++11) |
Especializa el algoritmo std::swap. (plantilla de función) |
Especializa el algoritmo std::swap. (plantilla de función) | |
(C++17) |
Especializa el algoritmo std::swap. (función) |
(C++17) |
Especializa el algoritmo std::swap. (función) |
(C++17) |
Especializa el algoritmo std::swap. (función) |
Intercambia dos rutas de acceso (función) |
[editar] Ejemplo
Salida:
5 3 3 5
[editar] Informes de defectos
Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.
ID | Aplicado a | Comportamiento según lo publicado | Comportamiento correcto |
---|---|---|---|
LWG 2554 | C++11 | Intercambiar arrays multidimensionales nunca puede sernoexcept debido a problemas de búsqueda de nombres.
|
Se hizo funcionar. |
[editar] Véase también
Intercambia los elementos a los que apuntan dos iteradores (plantilla de función) | |
swaps dos rangos de elementos Original: swaps two ranges of elements The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (plantilla de función) | |
(C++14) |
Reemplaza el argumento con un valor nuevo y devuelve su valor previo. (plantilla de función) |