Para ver el artículo en inglés, active la casilla Inglés. También puede ver el texto en inglés en una ventana emergente si pasa el puntero del mouse por el texto.
Traducción
Inglés

swap (Biblioteca estándar de C++)

 

Intercambiar dos objetos shared_ptr o weak_ptr.

template<class Ty, class Other>
    void swap(shared_ptr<Ty>& left, shared_ptr<Other>& right);
template<class Ty, class Other>
    void swap(weak_ptr<Ty>& left, weak_ptr<Other>& right);

Ty

Tipo controlado por el puntero compartido/débil izquierdo.

Other

Tipo controlado por el puntero compartido/débil derecho.

left

Puntero compartido/débil izquierdo.

right

Puntero compartido/débil derecho.

Las funciones de plantilla llaman a left.swap(right).

 

// std_tr1__memory__swap.cpp 
// compile with: /EHsc 
#include <memory> 
#include <iostream> 

struct deleter 
    { 
    void operator()(int *p) 
        { 
        delete p; 
        } 
    }; 

int main() 
    { 
    std::shared_ptr<int> sp1(new int(5)); 
    std::shared_ptr<int> sp2(new int(10)); 
    std::cout << "*sp1 == " << *sp1 << std::endl; 

    sp1.swap(sp2); 
    std::cout << "*sp1 == " << *sp1 << std::endl; 

    swap(sp1, sp2); 
    std::cout << "*sp1 == " << *sp1 << std::endl; 
    std::cout << std::endl; 

    std::weak_ptr<int> wp1(sp1); 
    std::weak_ptr<int> wp2(sp2); 
    std::cout << "*wp1 == " << *wp1.lock() << std::endl; 

    wp1.swap(wp2); 
    std::cout << "*wp1 == " << *wp1.lock() << std::endl; 

    swap(wp1, wp2); 
    std::cout << "*wp1 == " << *wp1.lock() << std::endl; 

    return (0); 
    } 

*sp1 == 5
*sp1 == 10
*sp1 == 5

*wp1 == 5
*wp1 == 10
*wp1 == 5

Requisitos

Encabezado: <memory>

Espacio de nombres: std

Mostrar: