「std::unique ptr::swap」の版間の差分
提供: C++入門
(ページの作成:「<!-- vim: filetype=mediawiki --> __TOC__ == 概要 == std::unique_ptr と std::unique_ptr のポインタを std::unique_ptr::swap で入れ替えるこ...」) |
細 (Daemon がページ「Std::unique ptr::swap」を「std::unique ptr::swap」に移動しました) |
||
(同じ利用者による、間の1版が非表示) | |||
行52: | 行52: | ||
* [[std::unique_ptr]] | * [[std::unique_ptr]] | ||
+ | * [[std::unique_ptr::reset]] | ||
+ | * [[std::unique_ptr::release]] | ||
+ | * [[std::unique_ptr::get]] | ||
* [[スマートポインタ]] | * [[スマートポインタ]] |
2013年3月23日 (土) 16:30時点における最新版
概要
std::unique_ptr と std::unique_ptr のポインタを std::unique_ptr::swap で入れ替えることができます。 release/reset/get_deleterを利用して、マニュアルで記述するよりもはるかにシンプルに記述できます。
std::unique_ptr::swap の例
ソースコード unique_ptr_swap.cpp
#include <iostream> #include <exception> #include <memory> int main(int argc, char const* argv[]) { std::unique_ptr<int> foo(new int(123)); std::unique_ptr<int> bar(new int(456)); foo.swap(bar); std::cout << "foo: " << *foo << std::endl; // 456 std::cout << "bar: " << *bar << std::endl; // 123 return 0; }
コンパイル
g++48 -std=c++11 unique_ptr_swap.cpp -o unique_ptr_swap
実行例
% ./unique_ptr_swap foo: 456 bar: 123