std::swap(std::shared_ptr) - cppreference.com (original) (raw)
From cppreference.com
< cpp | memory | shared ptr
Member functions |
---|
shared_ptr::shared_ptr |
shared_ptr::~shared_ptr |
shared_ptr::operator= |
Modifiers |
shared_ptr::reset |
shared_ptr::swap |
Observers |
shared_ptr::get |
shared_ptr::operator*shared_ptr::operator-> |
shared_ptr::operator[](C++17) |
shared_ptr::use_count |
shared_ptr::unique(until C++20*) |
shared_ptr::operator bool |
shared_ptr::owner_before |
shared_ptr::owner_hash(C++26) |
shared_ptr::owner_equal(C++26) |
Non-member functions |
swap(std::shared_ptr) |
make_sharedmake_shared_for_overwrite(C++20) |
allocate_sharedallocate_shared_for_overwrite(C++20) |
static_pointer_castdynamic_pointer_castconst_pointer_castreinterpret_pointer_cast(C++17) |
get_deleter |
operator==operator!=operator<operator<=operator>operator>=operator<=>(until C++20)(until C++20)(until C++20)(until C++20)(until C++20)(C++20) |
operator<< |
atomic_xxxfunctions (until C++26*) |
Helper classes |
atomicstd::shared\_ptr(C++20) |
hashstd::shared\_ptr |
Deduction guides(C++17) |
| Defined in header | | | | ------------------------------------------------------------------------------------------------------------------------------------------------ | | ------------- | | template< class T > void swap( std::shared_ptr<T>& lhs, std::shared_ptr<T>& rhs ) noexcept; | | (since C++11) |
Specializes the std::swap algorithm for std::shared_ptr. Swaps the contents of lhs and rhs. Calls lhs.swap(rhs).
Contents
[edit] Parameters
lhs, rhs | - | smart pointers whose contents to swap |
---|
[edit] Return value
(none)
[edit] Complexity
Constant.
[edit] Example
Run this code
#include
#include
#include
struct Foo {
Foo(int _val) : val(_val) { std::cout << "Foo...\n"; }
Foo() { std::cout << "Foo...\n"; }
std::string print() { return std::to_string(val); }
int val;
};
int main()
{
std::shared_ptr p1 = std::make_shared(100);
std::shared_ptr p2 = std::make_shared(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();
}
Output:
Foo... Foo... p1=100 p2=200 p1=200 p2=100 ~Foo... p1=nullptr p2=100 p1=100 p2=nullptr ~Foo...
[edit] See also
swap | swaps the values of two objects (function template) [edit] |
---|---|
swap | swaps the contents (public member function) [edit] |
Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/memory/shared_ptr/swap2&oldid=160271"