std::basic_string<CharT,Traits,Allocator>:: swap
|
void
swap
(
basic_string
&
other
)
;
|
(hasta C++17) | |
|
void
swap
(
basic_string
&
other
)
noexcept
(
/* see below */
)
;
|
(desde C++17)
(constexpr desde C++20) |
|
Intercambia el contenido de la cadena con el de other . Todos los iteradores y referencias pueden quedar invalidados.
|
Si
std::
allocator_traits
<
allocator_type
>
::
propagate_on_container_swap
::
value
es
true
, entonces los allocators se intercambian mediante una llamada no calificada a la función no-miembro
|
(desde C++11) |
Contenidos |
Parámetros
| other | - | cadena con la cual intercambiar contenidos |
Complejidad
Constante.
Excepciones
|
No se lanza ninguna excepción. |
(until C++11) |
|
No se lanza ninguna excepción, a menos que el comportamiento sea indefinido. Si se lanza una excepción por cualquier motivo, esta función no tiene efecto ( garantía de seguridad de excepciones fuerte ). |
(since C++11) |
|
noexcept
especificación:
noexcept
(
std::
allocator_traits
<
Allocator
>
::
propagate_on_container_swap
::
value
||
std:: allocator_traits < Allocator > :: is_always_equal :: value ) |
(desde C++17) |
Ejemplo
#include <iostream> #include <string> int main() { std::string a = "AAA"; std::string b = "BBBB"; std::cout << "Before swap:\n" "a = " << a << "\n" "b = " << b << "\n\n"; a.swap(b); std::cout << "After swap:\n" "a = " << a << "\n" "b = " << b << '\n'; }
Salida:
Before swap: a = AAA b = BBBB After swap: a = BBBB b = AAA
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 403 | C++98 |
swap()
podría lanzar una excepción
|
no se lanza ninguna excepción |
| LWG 535 | C++98 | el intercambio de strings no preservaba el orden de caracteres | los órdenes también se preservan |
|
LWG 2151
( P1148R0 ) |
C++11 |
no se lanzaba excepción en el caso
de allocators no propagadores desiguales |
el comportamiento es
indefinido en este caso |
Véase también
|
intercambia los valores de dos objetos
(plantilla de función) |
|
|
intercambia dos rangos de elementos
(plantilla de función) |
|
|
intercambia los contenidos
(función miembro pública de
std::basic_string_view<CharT,Traits>
)
|