Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::swap(std::unique_ptr)

      From cppreference.com
      <cpp‎ |memory‎ |unique ptr
       
       
      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,class D>
      void swap(std::unique_ptr<T, D>& lhs,std::unique_ptr<T, D>& rhs)noexcept;
      (since C++11)
      (constexpr since C++23)

      Specializes thestd::swap algorithm forstd::unique_ptr. Swaps the contents oflhs andrhs. Callslhs.swap(rhs).

      This function does not participate in overload resolution unlessstd::is_swappable_v<D> istrue.

      (since C++17)

      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::unique_ptr<Foo> p1=std::make_unique<Foo>(100);std::unique_ptr<Foo> p2=std::make_unique<Foo>(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

      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/unique_ptr/swap2&oldid=125271"

      [8]ページ先頭

      ©2009-2025 Movatter.jp