Чтобы прочитать статью на английском языке, установите флажок Английский. Вы также можете просматривать текст на английском языке во всплывающем окне, наводя указатель мыши на текст.
Перевод
Английский

swap (стандартная библиотека C++)

 

Переключение двух объектов shared_ptr или 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

Тип, управляемый левым общим указателем или слабым указателем.

Other

Тип, управляемый правым общим указателем или слабым указателем.

left

Левый общий или слабый указатель.

right

Правый общий или слабый указатель.

Функция шаблона вызывает 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

Требования

Заголовок: <память>

Пространство имен: std

Показ: