Submit Search
Upload
C++ tips2 インクリメント編
•
1 like
•
3,352 views
道化師 堂華
Follow
主に cppll ML でご紹介してきた tips をC++の仕様をより掘り下げた形でまとめ直してみました。 今回はインクリメントにフォーカスした内容です。
Read less
Read more
Technology
Slideshow view
Report
Share
Slideshow view
Report
Share
1 of 16
Download now
Download to read offline
Recommended
C++ tips1 #include編
C++ tips1 #include編
道化師 堂華
C++ tips 3 カンマ演算子編
C++ tips 3 カンマ演算子編
道化師 堂華
C++ tips4 cv修飾編
C++ tips4 cv修飾編
道化師 堂華
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
natrium11321
C++入門?
C++入門?
tsudaa
C++0x総復習
C++0x総復習
道化師 堂華
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
Hibiki Yamashiro
エラーハンドリング
エラーハンドリング
道化師 堂華
Recommended
C++ tips1 #include編
C++ tips1 #include編
道化師 堂華
C++ tips 3 カンマ演算子編
C++ tips 3 カンマ演算子編
道化師 堂華
C++ tips4 cv修飾編
C++ tips4 cv修飾編
道化師 堂華
競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
natrium11321
C++入門?
C++入門?
tsudaa
C++0x総復習
C++0x総復習
道化師 堂華
競技プログラミングにおけるコードの書き方とその利便性
競技プログラミングにおけるコードの書き方とその利便性
Hibiki Yamashiro
エラーハンドリング
エラーハンドリング
道化師 堂華
C++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプ
Kohsuke Yuasa
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Shintarou Okada
Effective Modern C++ 勉強会#1 Item3,4
Effective Modern C++ 勉強会#1 Item3,4
Takashi Hoshino
templateとautoの型推論
templateとautoの型推論
MITSUNARI Shigeo
君はまだ,本当のプリプロセスを知らない
君はまだ,本当のプリプロセスを知らない
digitalghost
F#によるFunctional Programming入門
F#によるFunctional Programming入門
bleis tift
第1回勉強会スライド
第1回勉強会スライド
koturn 0;
第2回勉強会スライド
第2回勉強会スライド
koturn 0;
Define and expansion of cpp macro
Define and expansion of cpp macro
digitalghost
Emcpp0506
Emcpp0506
Takatoshi Kondo
Better C#の脱却を目指して
Better C#の脱却を目指して
bleis tift
C++11
C++11
京大 マイコンクラブ
yieldとreturnの話
yieldとreturnの話
bleis tift
C++コンパイラ GCCとClangからのメッセージをお読みください
C++コンパイラ GCCとClangからのメッセージをお読みください
digitalghost
T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門
伸男 伊藤
知って得するC#
知って得するC#
Shota Baba
最新C++事情 C++14-C++20 (2018年10月)
最新C++事情 C++14-C++20 (2018年10月)
Akihiko Matuura
モナドハンズオン前座
モナドハンズオン前座
bleis tift
Implicit Implicit Scala
Implicit Implicit Scala
Kota Mizushima
Effective modern C++ 勉強会 #3 Item 12
Effective modern C++ 勉強会 #3 Item 12
Keisuke Fukuda
わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61
TATSUYA HAYAMIZU
Visual C++ 2015の紹介(C++11/14的に)
Visual C++ 2015の紹介(C++11/14的に)
egtra
More Related Content
What's hot
C++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプ
Kohsuke Yuasa
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Shintarou Okada
Effective Modern C++ 勉強会#1 Item3,4
Effective Modern C++ 勉強会#1 Item3,4
Takashi Hoshino
templateとautoの型推論
templateとautoの型推論
MITSUNARI Shigeo
君はまだ,本当のプリプロセスを知らない
君はまだ,本当のプリプロセスを知らない
digitalghost
F#によるFunctional Programming入門
F#によるFunctional Programming入門
bleis tift
第1回勉強会スライド
第1回勉強会スライド
koturn 0;
第2回勉強会スライド
第2回勉強会スライド
koturn 0;
Define and expansion of cpp macro
Define and expansion of cpp macro
digitalghost
Emcpp0506
Emcpp0506
Takatoshi Kondo
Better C#の脱却を目指して
Better C#の脱却を目指して
bleis tift
C++11
C++11
京大 マイコンクラブ
yieldとreturnの話
yieldとreturnの話
bleis tift
C++コンパイラ GCCとClangからのメッセージをお読みください
C++コンパイラ GCCとClangからのメッセージをお読みください
digitalghost
T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門
伸男 伊藤
知って得するC#
知って得するC#
Shota Baba
最新C++事情 C++14-C++20 (2018年10月)
最新C++事情 C++14-C++20 (2018年10月)
Akihiko Matuura
モナドハンズオン前座
モナドハンズオン前座
bleis tift
Implicit Implicit Scala
Implicit Implicit Scala
Kota Mizushima
Effective modern C++ 勉強会 #3 Item 12
Effective modern C++ 勉強会 #3 Item 12
Keisuke Fukuda
What's hot
(20)
C++ ポインタ ブートキャンプ
C++ ポインタ ブートキャンプ
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
Effective Modern C++ 勉強会#1 Item3,4
Effective Modern C++ 勉強会#1 Item3,4
templateとautoの型推論
templateとautoの型推論
君はまだ,本当のプリプロセスを知らない
君はまだ,本当のプリプロセスを知らない
F#によるFunctional Programming入門
F#によるFunctional Programming入門
第1回勉強会スライド
第1回勉強会スライド
第2回勉強会スライド
第2回勉強会スライド
Define and expansion of cpp macro
Define and expansion of cpp macro
Emcpp0506
Emcpp0506
Better C#の脱却を目指して
Better C#の脱却を目指して
C++11
C++11
yieldとreturnの話
yieldとreturnの話
C++コンパイラ GCCとClangからのメッセージをお読みください
C++コンパイラ GCCとClangからのメッセージをお読みください
T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門
知って得するC#
知って得するC#
最新C++事情 C++14-C++20 (2018年10月)
最新C++事情 C++14-C++20 (2018年10月)
モナドハンズオン前座
モナドハンズオン前座
Implicit Implicit Scala
Implicit Implicit Scala
Effective modern C++ 勉強会 #3 Item 12
Effective modern C++ 勉強会 #3 Item 12
Viewers also liked
わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61
TATSUYA HAYAMIZU
Visual C++ 2015の紹介(C++11/14的に)
Visual C++ 2015の紹介(C++11/14的に)
egtra
大学でC++03を教わった私が、便利そうだと思ったC++11の新機能
大学でC++03を教わった私が、便利そうだと思ったC++11の新機能
tSURooT
猫にはわからないGit講座
猫にはわからないGit講座
Yusei Yamanaka
Github勉強会
Github勉強会
From Atom
Gitの使い方あれこれ
Gitの使い方あれこれ
よしだ あつし
C++11やemscriptenと付き合って1年間の振り返り
C++11やemscriptenと付き合って1年間の振り返り
paosidufgythrj
ノンプログラマでも今日から使える「Git」でバージョン管理
ノンプログラマでも今日から使える「Git」でバージョン管理
H2O Space. Co., Ltd.
コンセプトから理解するGitコマンド
コンセプトから理解するGitコマンド
ktateish
Git flowの活用事例
Git flowの活用事例
Hirohito Kato
はじめようGit
はじめようGit
techscore
15分でわかるGit入門
15分でわかるGit入門
to_ueda
やりなおせる Git 入門
やりなおせる Git 入門
Tomohiko Himura
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
CROOZ, inc.
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
Takashi Uemura
デザイナのためのGit入門
デザイナのためのGit入門
dsuke Takaoka
一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理
Takafumi Yoshida
セキュリティ業務の内製とチームメンバー育成
セキュリティ業務の内製とチームメンバー育成
Toshiharu Sugiyama
こわくない Git
こわくない Git
Kota Saito
Viewers also liked
(19)
わんくま同盟大阪勉強会#61
わんくま同盟大阪勉強会#61
Visual C++ 2015の紹介(C++11/14的に)
Visual C++ 2015の紹介(C++11/14的に)
大学でC++03を教わった私が、便利そうだと思ったC++11の新機能
大学でC++03を教わった私が、便利そうだと思ったC++11の新機能
猫にはわからないGit講座
猫にはわからないGit講座
Github勉強会
Github勉強会
Gitの使い方あれこれ
Gitの使い方あれこれ
C++11やemscriptenと付き合って1年間の振り返り
C++11やemscriptenと付き合って1年間の振り返り
ノンプログラマでも今日から使える「Git」でバージョン管理
ノンプログラマでも今日から使える「Git」でバージョン管理
コンセプトから理解するGitコマンド
コンセプトから理解するGitコマンド
Git flowの活用事例
Git flowの活用事例
はじめようGit
はじめようGit
15分でわかるGit入門
15分でわかるGit入門
やりなおせる Git 入門
やりなおせる Git 入門
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
GitLab & web hooks & git-flowで実現する企業向けgit環境の構築
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
もしWordPressユーザーがGitを使ったら 〜WordPressテーマを共同編集しよう〜
デザイナのためのGit入門
デザイナのためのGit入門
一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理
セキュリティ業務の内製とチームメンバー育成
セキュリティ業務の内製とチームメンバー育成
こわくない Git
こわくない Git
Similar to C++ tips2 インクリメント編
C#勉強会
C#勉強会
hakugakucafe
Boost17 cpplinq
Boost17 cpplinq
miki_hirofumi
boost - std - C#
boost - std - C#
Tatsuya Ishikawa
NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門
Shiqiao Du
Wrapping a C++ library with Cython
Wrapping a C++ library with Cython
fuzzysphere
Unity ネイティブプラグインの作成について
Unity ネイティブプラグインの作成について
Tatsuhiko Yamamura
C#や.NET Frameworkがやっていること
C#や.NET Frameworkがやっていること
信之 岩永
C++ lecture-0
C++ lecture-0
sunaemon
C++0xの概要(デブサミ2010)
C++0xの概要(デブサミ2010)
Akira Takahashi
Swiftによる関数型プログラミング超入門
Swiftによる関数型プログラミング超入門
Hisakuni Fujimoto
F#のinlineと型推論(狩)
F#のinlineと型推論(狩)
Kazuhiro Matsushima
C++の復習
C++の復習
Toshihiko Ando
[2001/05/30] .NET Developers Conference 2001 May / C#の生産性とパフォーマンス
[2001/05/30] .NET Developers Conference 2001 May / C#の生産性とパフォーマンス
Tatsuhiko Tanaka
.NETの自作ツール公開手段
.NETの自作ツール公開手段
Pierre3 小林
More C++11
More C++11
京大 マイコンクラブ
What is template
What is template
Akira Takahashi
Cython intro prelerease
Cython intro prelerease
Shiqiao Du
はじめてのCodeIgniter
はじめてのCodeIgniter
Yuya Matsushima
Database, Polymorphism and Modern C++
Database, Polymorphism and Modern C++
Toshitaka Adachi
The evolution of c#
The evolution of c#
leverages_event
Similar to C++ tips2 インクリメント編
(20)
C#勉強会
C#勉強会
Boost17 cpplinq
Boost17 cpplinq
boost - std - C#
boost - std - C#
NumPyが物足りない人へのCython入門
NumPyが物足りない人へのCython入門
Wrapping a C++ library with Cython
Wrapping a C++ library with Cython
Unity ネイティブプラグインの作成について
Unity ネイティブプラグインの作成について
C#や.NET Frameworkがやっていること
C#や.NET Frameworkがやっていること
C++ lecture-0
C++ lecture-0
C++0xの概要(デブサミ2010)
C++0xの概要(デブサミ2010)
Swiftによる関数型プログラミング超入門
Swiftによる関数型プログラミング超入門
F#のinlineと型推論(狩)
F#のinlineと型推論(狩)
C++の復習
C++の復習
[2001/05/30] .NET Developers Conference 2001 May / C#の生産性とパフォーマンス
[2001/05/30] .NET Developers Conference 2001 May / C#の生産性とパフォーマンス
.NETの自作ツール公開手段
.NETの自作ツール公開手段
More C++11
More C++11
What is template
What is template
Cython intro prelerease
Cython intro prelerease
はじめてのCodeIgniter
はじめてのCodeIgniter
Database, Polymorphism and Modern C++
Database, Polymorphism and Modern C++
The evolution of c#
The evolution of c#
More from 道化師 堂華
Reflection with xamarin.forms
Reflection with xamarin.forms
道化師 堂華
独りガラパゴス開発
独りガラパゴス開発
道化師 堂華
エラーハンドリングモデル考察
エラーハンドリングモデル考察
道化師 堂華
C++プログラマの為のセキュリティ入門
C++プログラマの為のセキュリティ入門
道化師 堂華
マスタリング バベル
マスタリング バベル
道化師 堂華
並列プログラミング入門!&おさらい!
並列プログラミング入門!&おさらい!
道化師 堂華
バグベアード入門
バグベアード入門
道化師 堂華
LUCIFERの設計コンセプトと 導入予定の機能紹介
LUCIFERの設計コンセプトと 導入予定の機能紹介
道化師 堂華
More from 道化師 堂華
(8)
Reflection with xamarin.forms
Reflection with xamarin.forms
独りガラパゴス開発
独りガラパゴス開発
エラーハンドリングモデル考察
エラーハンドリングモデル考察
C++プログラマの為のセキュリティ入門
C++プログラマの為のセキュリティ入門
マスタリング バベル
マスタリング バベル
並列プログラミング入門!&おさらい!
並列プログラミング入門!&おさらい!
バグベアード入門
バグベアード入門
LUCIFERの設計コンセプトと 導入予定の機能紹介
LUCIFERの設計コンセプトと 導入予定の機能紹介
Recently uploaded
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
Hiroshi Tomioka
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
Recently uploaded
(9)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版) 2024年4月作成
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
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 now