Enviar pesquisa
Carregar
Unique ptr の紹介
•
Transferir como PPTX, PDF
•
1 gostou
•
2,075 visualizações
Daisuke Nikura
Seguir
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 46
Baixar agora
Recomendados
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
Hiro H.
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
Hiro H.
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Hiro H.
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
Hiro H.
C++のライブラリを簡単に眺めてみよう
C++のライブラリを簡単に眺めてみよう
Hiro H.
C++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプ
Kohsuke Yuasa
C++ Template Meta Programming の紹介@社内勉強会
C++ Template Meta Programming の紹介@社内勉強会
Akihiko Matuura
闇魔術を触ってみた
闇魔術を触ってみた
Satoshi Sato
Recomendados
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
Hiro H.
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
Hiro H.
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Boost.勉強会 #21 札幌「C++1zにstring_viewが導入されてうれしいので紹介します」
Hiro H.
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
Hiro H.
C++のライブラリを簡単に眺めてみよう
C++のライブラリを簡単に眺めてみよう
Hiro H.
C++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプ
Kohsuke Yuasa
C++ Template Meta Programming の紹介@社内勉強会
C++ Template Meta Programming の紹介@社内勉強会
Akihiko Matuura
闇魔術を触ってみた
闇魔術を触ってみた
Satoshi Sato
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
kiki utagawa
C++入門?
C++入門?
tsudaa
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
natrium11321
静的解析を使った開発ツールの開発
静的解析を使った開発ツールの開発
Takuya Ueda
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Shintarou Okada
C# 8.0 Preview in Visual Studio 2019 (16.0)
C# 8.0 Preview in Visual Studio 2019 (16.0)
信之 岩永
C# 8.0 null許容参照型
C# 8.0 null許容参照型
信之 岩永
boost::shared_ptr tutorial
boost::shared_ptr tutorial
NU_Pan
shared_ptr & weak_ptr (ppt 第2版, DL 専用)
shared_ptr & weak_ptr (ppt 第2版, DL 専用)
Cryolite
最新C++事情 C++14-C++20 (2018年10月)
最新C++事情 C++14-C++20 (2018年10月)
Akihiko Matuura
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
Genya Murakami
core dumpでcode golf
core dumpでcode golf
Nomura Yusuke
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
Hibiki Yamashiro
C言語の宣言読み方講座
C言語の宣言読み方講座
tetra_cat
PHPとJavaScriptにおけるオブジェクト指向を比較する
PHPとJavaScriptにおけるオブジェクト指向を比較する
kwatch
C++0x総復習
C++0x総復習
道化師 堂華
エキスパートGo
エキスパートGo
Takuya Ueda
不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarray
Ryosuke839
C++0xの概要(デブサミ2010)
C++0xの概要(デブサミ2010)
Akira Takahashi
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISる
Hideyuki Tanaka
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
Hirotaka Kawata
センパイ!このプログラムクラッシュするんですけど。。。
センパイ!このプログラムクラッシュするんですけど。。。
yjono Seino
Mais conteúdo relacionado
Mais procurados
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
kiki utagawa
C++入門?
C++入門?
tsudaa
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
natrium11321
静的解析を使った開発ツールの開発
静的解析を使った開発ツールの開発
Takuya Ueda
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Shintarou Okada
C# 8.0 Preview in Visual Studio 2019 (16.0)
C# 8.0 Preview in Visual Studio 2019 (16.0)
信之 岩永
C# 8.0 null許容参照型
C# 8.0 null許容参照型
信之 岩永
boost::shared_ptr tutorial
boost::shared_ptr tutorial
NU_Pan
shared_ptr & weak_ptr (ppt 第2版, DL 専用)
shared_ptr & weak_ptr (ppt 第2版, DL 専用)
Cryolite
最新C++事情 C++14-C++20 (2018年10月)
最新C++事情 C++14-C++20 (2018年10月)
Akihiko Matuura
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
Genya Murakami
core dumpでcode golf
core dumpでcode golf
Nomura Yusuke
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
Hibiki Yamashiro
C言語の宣言読み方講座
C言語の宣言読み方講座
tetra_cat
PHPとJavaScriptにおけるオブジェクト指向を比較する
PHPとJavaScriptにおけるオブジェクト指向を比較する
kwatch
C++0x総復習
C++0x総復習
道化師 堂華
エキスパートGo
エキスパートGo
Takuya Ueda
不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarray
Ryosuke839
Mais procurados
(18)
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
Pythonの処理系はどのように実装され,どのように動いているのか? 我々はその実態を調査すべくアマゾンへと飛んだ.
C++入門?
C++入門?
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
静的解析を使った開発ツールの開発
静的解析を使った開発ツールの開発
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
C# 8.0 Preview in Visual Studio 2019 (16.0)
C# 8.0 Preview in Visual Studio 2019 (16.0)
C# 8.0 null許容参照型
C# 8.0 null許容参照型
boost::shared_ptr tutorial
boost::shared_ptr tutorial
shared_ptr & weak_ptr (ppt 第2版, DL 専用)
shared_ptr & weak_ptr (ppt 第2版, DL 専用)
最新C++事情 C++14-C++20 (2018年10月)
最新C++事情 C++14-C++20 (2018年10月)
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
core dumpでcode golf
core dumpでcode golf
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
C言語の宣言読み方講座
C言語の宣言読み方講座
PHPとJavaScriptにおけるオブジェクト指向を比較する
PHPとJavaScriptにおけるオブジェクト指向を比較する
C++0x総復習
C++0x総復習
エキスパートGo
エキスパートGo
不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarray
Semelhante a Unique ptr の紹介
C++0xの概要(デブサミ2010)
C++0xの概要(デブサミ2010)
Akira Takahashi
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISる
Hideyuki Tanaka
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
Hirotaka Kawata
センパイ!このプログラムクラッシュするんですけど。。。
センパイ!このプログラムクラッシュするんですけど。。。
yjono Seino
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
Yoshifumi Kawai
わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61
TATSUYA HAYAMIZU
Tensor flow勉強会3
Tensor flow勉強会3
tak9029
.NET Core 2.x 時代の C#
.NET Core 2.x 時代の C#
信之 岩永
FINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolang
Yoshiki Shibukawa
L-1グランプリ "D言語"
L-1グランプリ "D言語"
det coder
Visual C++コード分析を支えるSAL
Visual C++コード分析を支えるSAL
egtra
Why did I become a ruby committer
Why did I become a ruby committer
Masaya TARUI
D言語にまだ入っていない新機能 (Dの日#2)
D言語にまだ入っていない新機能 (Dの日#2)
tom-tan
Linux kernelのbspとupstream
Linux kernelのbspとupstream
wata2ki
130522 rt講習会(説明用)
130522 rt講習会(説明用)
openrtm
Semelhante a Unique ptr の紹介
(15)
C++0xの概要(デブサミ2010)
C++0xの概要(デブサミ2010)
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISる
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
30日でできない!コンピューター自作入門 - カーネル/VM探検隊@つくば
センパイ!このプログラムクラッシュするんですけど。。。
センパイ!このプログラムクラッシュするんですけど。。。
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61
Tensor flow勉強会3
Tensor flow勉強会3
.NET Core 2.x 時代の C#
.NET Core 2.x 時代の C#
FINAL FANTASY Record Keeperを支えたGolang
FINAL FANTASY Record Keeperを支えたGolang
L-1グランプリ "D言語"
L-1グランプリ "D言語"
Visual C++コード分析を支えるSAL
Visual C++コード分析を支えるSAL
Why did I become a ruby committer
Why did I become a ruby committer
D言語にまだ入っていない新機能 (Dの日#2)
D言語にまだ入っていない新機能 (Dの日#2)
Linux kernelのbspとupstream
Linux kernelのbspとupstream
130522 rt講習会(説明用)
130522 rt講習会(説明用)
Mais de Daisuke Nikura
マルチプラットフォーム開発導入
マルチプラットフォーム開発導入
Daisuke Nikura
Androidやりませんか
Androidやりませんか
Daisuke Nikura
DXライブラリのすゝめ
DXライブラリのすゝめ
Daisuke Nikura
Roombaを鉄騎コントローラーで操縦してみた
Roombaを鉄騎コントローラーで操縦してみた
Daisuke Nikura
勉強会を開こう
勉強会を開こう
Daisuke Nikura
Midiやろうよ
Midiやろうよ
Daisuke Nikura
TwitterのBasic認証が今度こそ終わります
TwitterのBasic認証が今度こそ終わります
Daisuke Nikura
diff template library
diff template library
Daisuke Nikura
Big america
Big america
Daisuke Nikura
今話題の3Dの理屈を知ってみる?
今話題の3Dの理屈を知ってみる?
Daisuke Nikura
Mais de Daisuke Nikura
(10)
マルチプラットフォーム開発導入
マルチプラットフォーム開発導入
Androidやりませんか
Androidやりませんか
DXライブラリのすゝめ
DXライブラリのすゝめ
Roombaを鉄騎コントローラーで操縦してみた
Roombaを鉄騎コントローラーで操縦してみた
勉強会を開こう
勉強会を開こう
Midiやろうよ
Midiやろうよ
TwitterのBasic認証が今度こそ終わります
TwitterのBasic認証が今度こそ終わります
diff template library
diff template library
Big america
Big america
今話題の3Dの理屈を知ってみる?
今話題の3Dの理屈を知ってみる?
Unique ptr の紹介
1.
unique_ptr の紹介 krustf
( @krustf )
2.
自己紹介 XAudio2 普及委員会メンバ(会員2名)
第1回では XAudio2 について発表 大学ではゲーム製作サークルで活動中 現在 C++0x のお勉強中 Lua 始めました 2010/8/29 unique_ptr の紹介 1
3.
こんな人が創った C++ 言語
2010/8/29 unique_ptr の紹介 2
4.
C++0x って? 今年
FCD が承認された C++ の新標準規格 現行の規格とほぼ100%の互換性を持つ GCC ( GNU Compiler Collection )Microsoft Visual C++などがすでに対応を始めている 2010/8/29 unique_ptr の紹介 3
5.
諸注意 これから話す内容は現段階で全コンパイラがサポートできていない場合があります C++
のバージョン比較の定義 現行のバージョン : C++03 新規格 : C++0x 2010/8/29 unique_ptr の紹介 4
6.
生ポインタを直接とか(笑) 2010/8/29 unique_ptr
の紹介 5 えーマジ 生ポインタ? 生ポインタが許されるのは小学生までだよねー
7.
バグの温床になりやすい new したものを手動で
delete とか new したインスタンスを直接返すとか 生ポインタを扱う事によるうっかりミスのバグがどれだけあるか 2010/8/29 unique_ptr の紹介 6
8.
2010/8/29 unique_ptr の紹介
7 スマートポインタを使おう!
9.
スマートポインタとは 賢い(Smart な)ポインタ
動的確保されたメモリを自動的に deleteしてくれる(リソースを自動解放してくれる)ようなクラス 宣言は違うが使い方はポインタそのもの 2010/8/29 unique_ptr の紹介 8
10.
std::unique_ptr C++0x で追加されたスマートポインタ
copy は不可能 rvalue reference と move semantics を使ったポインタの「所有権の移動」が可能 2010/8/29 unique_ptr の紹介 9
11.
2010/8/29 unique_ptr の紹介
10 (゚Д゚)ハァ?
12.
rvalue reference?move semantics?
13.
rvalue reference 式の右側にあるものを
rvalue と呼ぶ 関数の戻り値などの「一時的で無名なデータ」である rvalue への「参照」 「一時的」なら壊しても構わないはず 2010/8/29 unique_ptr の紹介 12
14.
move semantics 一時オブジェクトをコピーせずにポインタを移動しようという考え方
rvalue として受け取ったものをコピーするのではなく移動(move)させる C++03 では auto_ptr が有名 2010/8/29 unique_ptr の紹介 13
15.
早速使ってみる 2010/8/29 unique_ptr
の紹介 14 #include <memory> std::unique_ptr< int > ptr( new int(5) ); if( ptr ) { std::cout << *ptr << std::endl; } // スコープの末尾で自動的に delete を呼ぶ
16.
配列も使える 2010/8/29 unique_ptr
の紹介 15 #include <memory> std::unique_ptr< int[] > ptr( new int[5] ); for( int i = 0 ; i < 5 ; ++i ) { ptr[ i ] = i; } // delete [] がしっかり呼ばれる
17.
2010/8/29 unique_ptr の紹介
16 (・3・)アルェー?
18.
なんで? new - >
delete new [] - > delete [] どうやって区別してるの..... 2010/8/29 unique_ptr の紹介 17
19.
デリータ指定が可能 unique_ptr にはデリータクラス(オブジェクトを削除担当者)がテンプレート第2引数に指定可能
default_delete<T> がデフォルトで指定 2010/8/29 unique_ptr の紹介 18
20.
std::default_delete 2010/8/29 unique_ptr
の紹介 19 namespace std { template< class T > // 通常 struct default_delete { void operator()( T* ptr ) const { delete ptr; }; }; template< class T > // 配列 struct default_delete< T[] > { void operator()( T* ptr ) const { delete [] ptr; }; }; } // namespace std;
21.
デリータの指定方法 関数オブジェクト default_delete
の特殊化 関数を渡す(ちょっと面倒) 2010/8/29 unique_ptr の紹介 20 詳細な解説ははてなで記事書いてたのでこっち http://d.hatena.ne.jp/krustf/20100827/1282915158
22.
2010/8/29 unique_ptr の紹介
21 アプローチ方法がアレなので
23.
質問形式で幾つか
24.
Q.元からポインタだったら?
25.
特殊ケース(例. HANDLE 型)
typedef void* HANDLE;といった通常使う型が元々ポインタだったら? 2010/8/29 unique_ptr の紹介 24 std::unique_ptr< HANDLE, handle_deleter > ptr( CreateEvent( NULL, FALSE, FALSE, NULL ) ); #=> Error! 'コンストラクタのインスタンスと引数が一致しません'
26.
A.型からポインタを消せば良いじゃない
27.
型からポインタを消す std::remove_pointer を使う
2010/8/29 unique_ptr の紹介 26 std::unique_ptr< std::remove_pointer<HANDLE>::type , ... > ptr( ... ); ↓ std::unique_ptr< void, ... > ptr( ... );
28.
Q. 関数の戻り値にできる?
29.
unique_ptr で返却したい 生ポインタで返すのは嫌
2010/8/29 unique_ptr の紹介 28 hoge* create_instance(); hoge* ptr = create_instance(); delete ptr; // 手動解放とか.... // 解放しわすれでリークとか....
30.
A. 可能です
31.
関数の戻り値には move が働く
2010/8/29 unique_ptr の紹介 30 std::unique_ptr<hoge> create_instance(); std::unique_ptr<hoge> ptr = create_instance(); // 自動的に move が働いてポインタが移動される ptr->func(); // 自動的に削除, delete ptr; なんて書かなくて済む
32.
Q.unique_ptr の型が面倒だったら?
33.
ややこしい..... 2010/8/29 unique_ptr
の紹介 32 std::unique_ptr< std::remove_pointer<LPDIRECT3DDEVICE9>::type , com_deleter<LPDIRECT3DDEVICE9> > create_device(); std::unique_ptr< std::remove_pointer<LPDIRECT3DDEVICE9>::type , com_deleter<LPDIRECT3DDEVICE9> > ptr = create_device();
34.
A.auto を使おう!
35.
auto C++03 では局所変数についての明確な宣言
コンパイラが知っているので関数の戻り値や初期化値で推論してもらう 2010/8/29 unique_ptr の紹介 34 std::vector<int> arr; // it は std::vector<int>::iterator と推論 auto it = arr.begin();
36.
戻り値がややこしい時は auto 2010/8/29
unique_ptr の紹介 35 std::unique_ptr< std::remove_pointer<LPDIRECT3DDEVICE9>::type , com_deleter<LPDIRECT3DDEVICE9> > create_device(); auto device = create_device(); device->Present( NULL, NULL, NULL, NULL );
37.
結論
38.
unique_ptr おいしいです boost.scoped_ptr
デリータ指定できないし, move できない shared_ptr デリータ指定できるけどコスト的にどうなの? unique_ptr の使い道を考えると候補から外す std::auto_ptr C++0x から deprecated(廃止予定)になった 2010/8/29 unique_ptr の紹介 37
39.
積極的に使おう unique_ptr でメモリの手動解放をなくそう
2010/8/29 unique_ptr の紹介 38
40.
auto_ptr にはご退場願います
41.
今までありがとうございました 2010/8/29 unique_ptr
の紹介 40 auto_ptr auto_ptr
42.
auto_ptr さようなら! ご清聴ありがとうございました
43.
2010/8/29 unique_ptr の紹介
42 宣伝
44.
祝:プログラミングの魔道書発売! 2010/8/29 unique_ptr
の紹介 43 © 株式会社ロングゲート
45.
2010/8/29 unique_ptr の紹介
44 © 株式会社ロングゲート
46.
2010/8/29 unique_ptr の紹介
45 © 株式会社ロングゲート
Baixar agora