swap Function <memory>
Zaměnit dva objekty shared_ptr nebo 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);
Parametry
Ty
Typ řízena ukazatel sdílené nebo slabá doleva.Other
Typ řízena ukazatel doprava sdílené nebo slabá.left
Levé sdílené nebo slabá ukazatel.right
Ukazatel doprava sdílené nebo slabá.
Poznámky
Volání funkce šablony left.swap(right).
Příklad
// 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);
}
Požadavky
Záhlaví: <memory>
Obor názvů: std