std::swap(std::shared_ptr)
De cppreference.com
< cpp | memory | shared ptr
Definido en el archivo de encabezado <memory> | ||
template<class T > void swap(std::shared_ptr<T>& lhs, std::shared_ptr<T>& rhs )noexcept; | (desde C++11) | |
Especializa el algoritmo std::swap para std::shared_ptr. Intercambia el contenido de lhs
y rhs
. Llama a lhs.swap(rhs).
Contenido |
[editar]Parámetros
lhs, rhs | - | Punteros inteligentes cuyo contenido hay que intercambiar. |
[editar]Valor de retorno
(Ninguno)
[editar]Complejidad
Constante.
[editar]Ejemplo
Ejecuta este código
#include <iostream>#include <memory>#include <string> struct Foo { Foo(int _val): val(_val){std::cout<<"Foo...\n";} ~Foo(){std::cout<<"~Foo...\n";}std::string print(){returnstd::to_string(val);}int val;}; int main(){std::shared_ptr<Foo> p1 =std::make_shared<Foo>(100);std::shared_ptr<Foo> p2 =std::make_shared<Foo>(200);auto print =[&](){std::cout<<" p1="<<(p1 ? p1->print():"nullptr");std::cout<<" p2="<<(p2 ? p2->print():"nullptr")<<'\n';}; print(); std::swap(p1, p2); print(); p1.reset(); print(); std::swap(p1, p2); print();}
Salida:
Foo... Foo... p1=100 p2=200 p1=200 p2=100 ~Foo... p1=nullptr p2=100 p1=100 p2=nullptr ~Foo...
[editar]Véase también
Intercambia los valores de dos objetos (plantilla de función) | |
Intercambia el contenido. (función miembro pública) |