std::swap - cppreference.com
Intercambia los valores dados.
1) Constante.
2) Lineal en N.
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 Intercambiable para más detalles.
Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(función) [editar] Especialización de std::swap para
(plantilla de función) [editar] Especialización de std::swap para
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa al algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(función) [editar] Especializa el algoritmo std::swap.
(función) [editar] Especializa el algoritmo std::swap.
(función) [editar] Especializa el algoritmo std::swap
(plantilla de función) [editar] Intercambia dos rutas de acceso
(función) [editar] Especializa el algoritmo std::swap.
(función) [editar] Especializa el algoritmo std::swap.
(función) [editar] Especializa el algoritmo std::swap.
(función) [editar] Especializa el algoritmo std::swap
(función) [editar] Especializa el algoritmo std::swap
(función) [editar]
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(función) [editar] Especialización de std::swap para
unique_lock (plantilla de función) [editar] Especialización de std::swap para
shared_lock (plantilla de función) [editar] Especializa el algoritmo std::swap.
(plantilla de función) [editar] Especializa al algoritmo std::swap.
(plantilla de función) [editar] Especializa el algoritmo std::swap.
(función) [editar] Especializa el algoritmo std::swap.
(función) [editar] Especializa el algoritmo std::swap.
(función) [editar] Especializa el algoritmo std::swap
(plantilla de función) [editar] Intercambia dos rutas de acceso
(función) [editar] Especializa el algoritmo std::swap.
(función) [editar] Especializa el algoritmo std::swap.
(función) [editar] Especializa el algoritmo std::swap.
(función) [editar] Especializa el algoritmo std::swap
(función) [editar] Especializa el algoritmo std::swap
(función) [editar]
#include <algorithm> #include <iostream> namespace Ns { class A { int id {}; friend void swap(A& lhs, A& rhs) { std::cout << "swap(" << lhs << ", " << rhs << ")\n"; std::swap(lhs.id, rhs.id); } friend std::ostream& operator<<(std::ostream& os, A const& a) { return os << "A::id=" << a.id; } public: A(int i) : id {i} {} A(A const&) = delete; A& operator = (A const&) = delete; }; } int main() { int a = 5, b = 3; std::cout << a << ' ' << b << '\n'; std::swap(a, b); std::cout << a << ' ' << b << '\n'; Ns::A p {6}, q {9}; std::cout << p << ' ' << q << '\n'; // std::swap(p, q); // ERROR, no se cumplen los requisitos de tipo swap(p, q); // OK, ADL encuentra la función amiga `swap` apropiada std::cout << p << ' ' << q << '\n'; }
Salida:
5 3 3 5 A::id=6 A::id=9 swap(A::id=6, A::id=9) A::id=9 A::id=6
Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.