Submit Search
C++ tips2 インクリメント編
1 like
3,363 views
道化師 堂華
主に cppll ML でご紹介してきた tips をC++の仕様をより掘り下げた形でまとめ直してみました。 今回はインクリメントにフォーカスした内容です。
Technology
Read more
1 of 16
Download now
Downloaded 16 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
More Related Content
PPTX
C++ tips1 #include編
道化師 堂華
PPTX
C++ tips 3 カンマ演算子編
道化師 堂華
PPTX
C++ tips4 cv修飾編
道化師 堂華
PPTX
競技プログラミングのためのC++入門
natrium11321
PDF
C++入門?
tsudaa
PPTX
C++0x総復習
道化師 堂華
PDF
競技プログラミングにおけるコードの書き方とその利便性
Hibiki Yamashiro
PPTX
エラーハンドリング
道化師 堂華
C++ tips1 #include編
道化師 堂華
C++ tips 3 カンマ演算子編
道化師 堂華
C++ tips4 cv修飾編
道化師 堂華
競技プログラミングのためのC++入門
natrium11321
C++入門?
tsudaa
C++0x総復習
道化師 堂華
競技プログラミングにおけるコードの書き方とその利便性
Hibiki Yamashiro
エラーハンドリング
道化師 堂華
What's hot
(20)
PDF
C++ ポインタ ブートキャンプ
Kohsuke Yuasa
PDF
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Shintarou Okada
PDF
Effective Modern C++ 勉強会#1 Item3,4
Takashi Hoshino
PDF
templateとautoの型推論
MITSUNARI Shigeo
PDF
君はまだ,本当のプリプロセスを知らない
digitalghost
PDF
F#によるFunctional Programming入門
bleis tift
PDF
第1回勉強会スライド
koturn 0;
PDF
第2回勉強会スライド
koturn 0;
PDF
Define and expansion of cpp macro
digitalghost
PPTX
Emcpp0506
Takatoshi Kondo
PDF
Better C#の脱却を目指して
bleis tift
PDF
C++11
京大 マイコンクラブ
PDF
yieldとreturnの話
bleis tift
PDF
C++コンパイラ GCCとClangからのメッセージをお読みください
digitalghost
PPTX
T69 c++cli ネイティブライブラリラッピング入門
伸男 伊藤
PDF
知って得するC#
Shota Baba
PPTX
最新C++事情 C++14-C++20 (2018年10月)
Akihiko Matuura
PDF
モナドハンズオン前座
bleis tift
PDF
Implicit Implicit Scala
Kota Mizushima
PPTX
Effective modern C++ 勉強会 #3 Item 12
Keisuke Fukuda
C++ ポインタ ブートキャンプ
Kohsuke Yuasa
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Shintarou Okada
Effective Modern C++ 勉強会#1 Item3,4
Takashi Hoshino
templateとautoの型推論
MITSUNARI Shigeo
君はまだ,本当のプリプロセスを知らない
digitalghost
F#によるFunctional Programming入門
bleis tift
第1回勉強会スライド
koturn 0;
第2回勉強会スライド
koturn 0;
Define and expansion of cpp macro
digitalghost
Emcpp0506
Takatoshi Kondo
Better C#の脱却を目指して
bleis tift
C++11
京大 マイコンクラブ
yieldとreturnの話
bleis tift
C++コンパイラ GCCとClangからのメッセージをお読みください
digitalghost
T69 c++cli ネイティブライブラリラッピング入門
伸男 伊藤
知って得するC#
Shota Baba
最新C++事情 C++14-C++20 (2018年10月)
Akihiko Matuura
モナドハンズオン前座
bleis tift
Implicit Implicit Scala
Kota Mizushima
Effective modern C++ 勉強会 #3 Item 12
Keisuke Fukuda
Ad
Viewers also liked
(19)
PDF
わんくま同盟大阪勉強会#61
TATSUYA HAYAMIZU
PDF
Visual C++ 2015の紹介(C++11/14的に)
egtra
ODP
大学でC++03を教わった私が、便利そうだと思ったC++11の新機能
tSURooT
PDF
猫にはわからないGit講座
Yusei Yamanaka
PDF
Github勉強会
From Atom
PDF
Gitの使い方あれこれ
よしだ あつし
PDF
C++11やemscriptenと付き合って1年間の振り返り
paosidufgythrj
PDF
ノンプログラマでも今日から使える「Git」でバージョン管理
H2O Space. Co., Ltd.
PDF
コンセプトから理解するGitコマンド
ktateish
PDF
Git flowの活用事例
Hirohito Kato
PDF
はじめようGit
techscore
PDF
15分でわかるGit入門
to_ueda
PDF
やりなおせる Git 入門
Tomohiko Himura
PDF
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
CROOZ, inc.
PDF
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
Takashi Uemura
PDF
デザイナのためのGit入門
dsuke Takaoka
KEY
一人でもはじめるGitでバージョン管理
Takafumi Yoshida
PPT
セキュリティ業務の内製とチームメンバー育成
Toshiharu Sugiyama
PDF
こわくない Git
Kota Saito
わんくま同盟大阪勉強会#61
TATSUYA HAYAMIZU
Visual C++ 2015の紹介(C++11/14的に)
egtra
大学でC++03を教わった私が、便利そうだと思ったC++11の新機能
tSURooT
猫にはわからないGit講座
Yusei Yamanaka
Github勉強会
From Atom
Gitの使い方あれこれ
よしだ あつし
C++11やemscriptenと付き合って1年間の振り返り
paosidufgythrj
ノンプログラマでも今日から使える「Git」でバージョン管理
H2O Space. Co., Ltd.
コンセプトから理解するGitコマンド
ktateish
Git flowの活用事例
Hirohito Kato
はじめようGit
techscore
15分でわかるGit入門
to_ueda
やりなおせる Git 入門
Tomohiko Himura
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
CROOZ, inc.
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
Takashi Uemura
デザイナのためのGit入門
dsuke Takaoka
一人でもはじめるGitでバージョン管理
Takafumi Yoshida
セキュリティ業務の内製とチームメンバー育成
Toshiharu Sugiyama
こわくない Git
Kota Saito
Ad
Similar to C++ tips2 インクリメント編
(20)
PDF
C#勉強会
hakugakucafe
PPTX
Boost17 cpplinq
miki_hirofumi
PPTX
boost - std - C#
Tatsuya Ishikawa
PDF
NumPyが物足りない人へのCython入門
Shiqiao Du
PDF
Wrapping a C++ library with Cython
fuzzysphere
ODP
Unity ネイティブプラグインの作成について
Tatsuhiko Yamamura
PPTX
C#や.NET Frameworkがやっていること
信之 岩永
PDF
C++ lecture-0
sunaemon
PDF
C++0xの概要(デブサミ2010)
Akira Takahashi
PDF
Swiftによる関数型プログラミング超入門
Hisakuni Fujimoto
PDF
F#のinlineと型推論(狩)
Kazuhiro Matsushima
PPTX
C++の復習
Toshihiko Ando
PDF
[2001/05/30] .NET Developers Conference 2001 May / C#の生産性とパフォーマンス
Tatsuhiko Tanaka
PPTX
.NETの自作ツール公開手段
Pierre3 小林
PDF
More C++11
京大 マイコンクラブ
PDF
What is template
Akira Takahashi
PDF
Cython intro prelerease
Shiqiao Du
PDF
はじめてのCodeIgniter
Yuya Matsushima
PPTX
Database, Polymorphism and Modern C++
Toshitaka Adachi
PPTX
The evolution of c#
leverages_event
C#勉強会
hakugakucafe
Boost17 cpplinq
miki_hirofumi
boost - std - C#
Tatsuya Ishikawa
NumPyが物足りない人へのCython入門
Shiqiao Du
Wrapping a C++ library with Cython
fuzzysphere
Unity ネイティブプラグインの作成について
Tatsuhiko Yamamura
C#や.NET Frameworkがやっていること
信之 岩永
C++ lecture-0
sunaemon
C++0xの概要(デブサミ2010)
Akira Takahashi
Swiftによる関数型プログラミング超入門
Hisakuni Fujimoto
F#のinlineと型推論(狩)
Kazuhiro Matsushima
C++の復習
Toshihiko Ando
[2001/05/30] .NET Developers Conference 2001 May / C#の生産性とパフォーマンス
Tatsuhiko Tanaka
.NETの自作ツール公開手段
Pierre3 小林
More C++11
京大 マイコンクラブ
What is template
Akira Takahashi
Cython intro prelerease
Shiqiao Du
はじめてのCodeIgniter
Yuya Matsushima
Database, Polymorphism and Modern C++
Toshitaka Adachi
The evolution of c#
leverages_event
More from 道化師 堂華
(8)
PPTX
Reflection with xamarin.forms
道化師 堂華
PPTX
独りガラパゴス開発
道化師 堂華
PPTX
エラーハンドリングモデル考察
道化師 堂華
PPTX
C++プログラマの為のセキュリティ入門
道化師 堂華
PPTX
マスタリング バベル
道化師 堂華
PPTX
並列プログラミング入門!&おさらい!
道化師 堂華
PPTX
バグベアード入門
道化師 堂華
PPTX
LUCIFERの設計コンセプトと 導入予定の機能紹介
道化師 堂華
Reflection with xamarin.forms
道化師 堂華
独りガラパゴス開発
道化師 堂華
エラーハンドリングモデル考察
道化師 堂華
C++プログラマの為のセキュリティ入門
道化師 堂華
マスタリング バベル
道化師 堂華
並列プログラミング入門!&おさらい!
道化師 堂華
バグベアード入門
道化師 堂華
LUCIFERの設計コンセプトと 導入予定の機能紹介
道化師 堂華
C++ tips2 インクリメント編
1.
Boost.勉強会 #7 東京
( 2011-12-03 ) C++ TIPS 2 インクリメント編
2.
概要 主に cppll
ML でご紹介してきた tips をC++ の仕様をより掘り下げた形でまとめ直し てみました。 今回はインクリメントにフォーカスした 内容です。 C++ Tips Boost.勉強会 #7 東京 2
3.
C++ Tips インクリメント
4.
インクリメントとは? プログラミング用語としてのインクリメント
は値を+1したりあるいはイテレータなどを 一つ進めることを意味し、デクリメントは逆 に-1したり一つ戻したりすることを意味し ます。 C言語およびC言語を文法のベースにしている 多くの言語では ++ がインクリメント演算子 として、 -- がデクリメント演算子と使えます。 C++ Tips Boost.勉強会 #7 東京 4
5.
インクリメントとは? インクリメント演算子もデクリメント演
算子もひとつの値を対象とする単項演算 子です。 ++i のようにインクリメント演算子を演算 対象の値の前に置くと前置インクリメン トと呼ばれi++のように値の前に置くと後 置インクリメント呼ばれます。 C++ Tips Boost.勉強会 #7 東京 5
6.
インクリメントとは? ++i であっても
i++ であっても i はインクリ メントされます。 前置と後置の違いは式の評価値が、前置 の場合はインクリメント後の値となり、 後置の場合はインクリメント前の値とな ることです。 C++ Tips Boost.勉強会 #7 東京 6
7.
未定義動作 関数引数内で同じ変数に大してインクリ メントやデクリメントをやっちゃうと未 定義動作になってしまうので気をつけま しょう。 int
a = 0; ++a; // OK ++a; // OK f(++a, ++a); // NG C++ Tips Boost.勉強会 #7 東京 7
8.
未定義動作 ポインタや参照を使うと分かり難い形で この未定義動作になってしまうことがあ るので要注意です。 void f(int
&a, int &b) { h(++a, ++b); } void g(int &c) { f(c,c); } // NG C++ Tips Boost.勉強会 #7 東京 8
9.
インクリメントの定義 C++ではユーザー定義のクラスであってもイ
ンクリメント/デクリメントを定義できます。 言語使用上はその中身は別にインクリメント /デクリメントに類する処理である必要はあ りません。 ただ、混乱の元になるだけなのでインクリメント/ デクリメントおよびそれに類する処理以外に使う のはやめておきましょう。 C++ Tips Boost.勉強会 #7 東京 9
10.
インクリメントの定義 class hoge {
public: typedef hoge this_type; int value; this_type & operator ++ () { // 前置インクリメント ++value; return *this; } this_type operator ++ (int) { // 後置インクリメント this_type temp(*this); ++value; return temp; } }; C++ Tips Boost.勉強会 #7 東京 10
11.
メンバー関数呼び出し風の使用 通常のメンバー関数と同じ形式での呼び 出しも可能です。 hoge
hige; hige.operator++(); // 前置インクリメント hige.operator++(0); // 後置インクリメント C++ Tips Boost.勉強会 #7 東京 11
12.
メンバー関数呼び出し風の使用 後置インクリメントの引数は通常のメン バー関数と同様に使おうと思えば普通に 使えます。
通常のメンバー関数と同じ形式で呼び出す場 合に限る話であり、i++ のような形式では呼び 出し側から任意の値を渡すことはできません。 C++ Tips Boost.勉強会 #7 東京 12
13.
後置で複製を作らないには? デストラクタでインクリメントを行う一時オブ ジェクトを作ることで、後置インクリメントの
実装で自身の複製を作らないようにすることも 可能です。 どのみち、なんらかの一時オブジェクトが必要である ことには変わりが無い。 型が変わってしまうという副作用がある為、あまり推 奨できません。 複製のコストが高いクラスやストリームのイテレータ などで有効な手段となります。 C++ Tips Boost.勉強会 #7 東京 13
14.
どちらでもよい場合は前置 通常、組み込み型以外の後置インクリメントではイン
クリメント前のコピーである一時オブジェクトを返す ことになり、前置インクリメントでも構わない場合に 後置インクリメントを使うことは無駄なコストを支払 うことになるのでどちらでもよい場合は前置インクリ メントを使いましょう。 組み込み型の場合はどちらでも気にする必要はありま せんが、統一性の観点やコード修正により変数の型が 組み込み型でなくなった場合に備えて、組み込み型で も前置インクリメントを使いましょう。 C++ Tips Boost.勉強会 #7 東京 14
15.
C++ Tips 質疑応答
16.
C++ Tips ご清聴ありがとうございました。
Download