Espacios de nombres
Variantes
Acciones

std::array::swap

De cppreference.com
< cpp‎ | container‎ | array
 
 
 
 
void swap( array& other )noexcept(/* véase más abajo */);
(desde C++11)
(hasta C++20)
constexprvoid swap( array& other )noexcept(/* see below */);
(desde C++20)

Intercambia el contenido del contenedor con el de other. No ocasiona que los iteradores y referencias se asocien con el otro contenedor.

Contenido

[editar]Parámetros

other - El contenedor con el cual intercambiar el contenido.

[editar]Valor de retorno

(Ninguno)

[editar]Excepciones

Especificación noexcept:   (desde C++11)
noexcept(noexcept(swap(std::declval<T&>(), std::declval<T&>())))

En la expresión anterior, el identificador swap se busca de la misma manera que la utilizada por el rago de tipo std::is_nothrow_swappable de C++17.

(hasta C++17)
Especificación noexcept:   (desde C++11)
(desde C++17)
Para arrays de tamaño cero,
Especificación noexcept:  
noexcept
  (desde C++11)
.

[editar]Complejidad

Lineal de acuerdo al tamaño del contenedor.

[editar]Ejemplo

#include <array>#include <iostream>   template<class Os, class V> Os& operator<<(Os& os, const V& v){ os <<"{";for(auto i : v) os <<' '<< i;return os <<" } ";}   int main(){std::array<int, 3> a1{1, 2, 3}, a2{4, 5, 6};   auto it1 = a1.begin();auto it2 = a2.begin();int& ref1 = a1[1];int& ref2 = a2[1];   std::cout<< a1 << a2 <<*it1 <<' '<<*it2 <<' '<< ref1 <<' '<< ref2 <<'\n'; a1.swap(a2);std::cout<< a1 << a2 <<*it1 <<' '<<*it2 <<' '<< ref1 <<' '<< ref2 <<'\n';   // Observa que después del intercambio los iteradores y referencias// continúan asociados con su array original// array, p. ej., `it1` aún apunta al elemento a1[0], `ref1` se refiere a a1[1].}

Salida:

{ 1 2 3 } { 4 5 6 } 1 4 2 5 { 4 5 6 } { 1 2 3 } 4 1 5 2

[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 2456 C++11 La especificación noexcept está mal formada Se hizo que funcionara

[editar]Véase también

Especializa el algoritmo std::swap.
(plantilla de función)[editar]
close