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)
constexpr void 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]