Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::swap(std::weak_ptr)

      From cppreference.com
      <cpp‎ |memory‎ |weak ptr

      [edit template]
       
       
      Memory management library
      (exposition only*)
      Allocators
      Uninitialized memory algorithms
      Constrained uninitialized memory algorithms
      Memory resources
      Uninitialized storage(until C++20)
      (until C++20*)
      (until C++20*)
      Garbage collector support(until C++23)
      (C++11)(until C++23)
      (C++11)(until C++23)
      (C++11)(until C++23)
      (C++11)(until C++23)
      (C++11)(until C++23)
      (C++11)(until C++23)
       
       
      Defined in header<memory>
      template<class T>
      void swap(std::weak_ptr<T>& lhs,std::weak_ptr<T>& rhs)noexcept;
      (since C++11)

      Specializes thestd::swap algorithm forstd::weak_ptr. Swaps the contents oflhs andrhs. Callslhs.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 <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> sp1=std::make_shared<Foo>(100);std::shared_ptr<Foo> sp2=std::make_shared<Foo>(200);std::weak_ptr<Foo> wp1= sp1;std::weak_ptr<Foo> wp2= sp2;auto print=[&](){auto p1= wp1.lock();auto p2= wp2.lock();std::cout<<" p1="<<(p1? p1->print():"nullptr");std::cout<<" p2="<<(p2? p2->print():"nullptr")<<'\n';};    print(); std::swap(wp1, wp2);    print();     wp1.reset();    print(); std::swap(wp1, wp2);    print();}

      Output:

      Foo...Foo... p1=100 p2=200 p1=200 p2=100 p1=nullptr p2=100 p1=100 p2=nullptr~Foo...~Foo...

      [edit]See also

      swaps the values of two objects
      (function template)[edit]
      swaps the contents
      (public member function)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/memory/weak_ptr/swap2&oldid=125268"

      [8]ページ先頭

      ©2009-2025 Movatter.jp