Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
TN
Uploaded by
Tomohiro Namba
304 views
研究生のためのC++ no.4
研究室のゼミの資料。研究に役立つC++入門。 四回目はテンプレート。
Software
◦
Read more
0
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 36
2
/ 36
3
/ 36
4
/ 36
5
/ 36
6
/ 36
7
/ 36
8
/ 36
9
/ 36
10
/ 36
11
/ 36
12
/ 36
13
/ 36
14
/ 36
15
/ 36
16
/ 36
17
/ 36
18
/ 36
19
/ 36
20
/ 36
21
/ 36
22
/ 36
23
/ 36
24
/ 36
25
/ 36
26
/ 36
27
/ 36
28
/ 36
29
/ 36
30
/ 36
31
/ 36
32
/ 36
33
/ 36
34
/ 36
35
/ 36
36
/ 36
More Related Content
PDF
研究生のためのC++ no.3
by
Tomohiro Namba
PDF
研究生のためのC++ no.2
by
Tomohiro Namba
PPTX
Enshu8
by
sudahiroshi
PDF
Pythonデータ分析 第3回勉強会資料 8章
by
Makoto Kawano
PDF
Emcjp item21
by
MITSUNARI Shigeo
PDF
命令プログラミングから関数プログラミングへ
by
Naoki Kitora
PPT
CLR/H No.35-2
by
Nobuhisa Koizumi
PDF
[第2版]Python機械学習プログラミング 第14章
by
Haruki Eguchi
研究生のためのC++ no.3
by
Tomohiro Namba
研究生のためのC++ no.2
by
Tomohiro Namba
Enshu8
by
sudahiroshi
Pythonデータ分析 第3回勉強会資料 8章
by
Makoto Kawano
Emcjp item21
by
MITSUNARI Shigeo
命令プログラミングから関数プログラミングへ
by
Naoki Kitora
CLR/H No.35-2
by
Nobuhisa Koizumi
[第2版]Python機械学習プログラミング 第14章
by
Haruki Eguchi
What's hot
PDF
NumPy闇入門
by
Ryosuke Okuta
PDF
[第2版]Python機械学習プログラミング 第8章
by
Haruki Eguchi
PDF
Python for Data Anaysis第2回勉強会4,5章
by
Makoto Kawano
PDF
Introduction to NumPy & SciPy
by
Shiqiao Du
PDF
[第2版]Python機械学習プログラミング 第16章
by
Haruki Eguchi
PDF
NumPyが物足りない人へのCython入門
by
Shiqiao Du
PDF
Ekmett勉強会発表資料
by
時響 逢坂
ODP
Ekmett勉強会発表資料
by
時響 逢坂
PDF
科学技術計算関連Pythonパッケージの概要
by
Toshihiro Kamishima
PDF
2013.07.15 はじパタlt scikit-learnで始める機械学習
by
Motoya Wakiyama
PDF
関数型プログラミング入門 with OCaml
by
Haruka Oikawa
PDF
Gura プログラミング言語の紹介
by
Yutaka Saito
PDF
マスターオブゴールーチンアンドチャネル スタートGo #1
by
Takuya Ueda
PDF
すごいHaskell楽しく学ぼう-第12章モノイド-
by
Hiromasa Ohashi
PDF
VS勉強会 .NET Framework 入門
by
kamukiriri
PPTX
for関数を使った繰り返し処理によるヒストグラムの一括出力
by
imuyaoti
ODP
Real World OCamlを読んでLispと協調してみた
by
blackenedgold
PDF
C++コンパイラ GCCとClangからのメッセージをお読みください
by
digitalghost
PDF
すごいH 第12章モノイド
by
Shinta Hatatani
PDF
Van laarhoven lens
by
Naoki Aoyama
NumPy闇入門
by
Ryosuke Okuta
[第2版]Python機械学習プログラミング 第8章
by
Haruki Eguchi
Python for Data Anaysis第2回勉強会4,5章
by
Makoto Kawano
Introduction to NumPy & SciPy
by
Shiqiao Du
[第2版]Python機械学習プログラミング 第16章
by
Haruki Eguchi
NumPyが物足りない人へのCython入門
by
Shiqiao Du
Ekmett勉強会発表資料
by
時響 逢坂
Ekmett勉強会発表資料
by
時響 逢坂
科学技術計算関連Pythonパッケージの概要
by
Toshihiro Kamishima
2013.07.15 はじパタlt scikit-learnで始める機械学習
by
Motoya Wakiyama
関数型プログラミング入門 with OCaml
by
Haruka Oikawa
Gura プログラミング言語の紹介
by
Yutaka Saito
マスターオブゴールーチンアンドチャネル スタートGo #1
by
Takuya Ueda
すごいHaskell楽しく学ぼう-第12章モノイド-
by
Hiromasa Ohashi
VS勉強会 .NET Framework 入門
by
kamukiriri
for関数を使った繰り返し処理によるヒストグラムの一括出力
by
imuyaoti
Real World OCamlを読んでLispと協調してみた
by
blackenedgold
C++コンパイラ GCCとClangからのメッセージをお読みください
by
digitalghost
すごいH 第12章モノイド
by
Shinta Hatatani
Van laarhoven lens
by
Naoki Aoyama
Viewers also liked
PDF
研究生のためのC++ no.7
by
Tomohiro Namba
PDF
Rango celdas autorellenar
by
Cecibel Curimilma
ZIP
Music Distribution Presentation
by
juankey56
PPS
..Festival Der Zeppeline
by
Carmen María Pérez
PPTX
E tefl
by
sahudmalvin123
PDF
Reference Pete
by
Sarah Schaefer
DOCX
Diseño de tablas
by
Cecibel Curimilma
PDF
Music Distribution_MVT-SUGO
by
jonathan johnson
PDF
La celebración pedagógica como eje
by
analabradorcra
PDF
Taller NTIC
by
Angélica María García Benavides
PDF
La historia interminable
by
analabradorcra
PDF
Great ideas in music distribution
by
Kristin Thomson
PDF
Yeny andrea Contreras
by
Yeny Andrea Gavidia Contreras
PPTX
Presentation1 incoterms 2010
by
Sandro Sans
DOC
Resume_Rajini (1)
by
rajini thumma
PDF
درباره ی بلوبری
by
دمنوش های گیاهی نیوشا
DOCX
string , pointer
by
Arafat Bin Reza
研究生のためのC++ no.7
by
Tomohiro Namba
Rango celdas autorellenar
by
Cecibel Curimilma
Music Distribution Presentation
by
juankey56
..Festival Der Zeppeline
by
Carmen María Pérez
E tefl
by
sahudmalvin123
Reference Pete
by
Sarah Schaefer
Diseño de tablas
by
Cecibel Curimilma
Music Distribution_MVT-SUGO
by
jonathan johnson
La celebración pedagógica como eje
by
analabradorcra
Taller NTIC
by
Angélica María García Benavides
La historia interminable
by
analabradorcra
Great ideas in music distribution
by
Kristin Thomson
Yeny andrea Contreras
by
Yeny Andrea Gavidia Contreras
Presentation1 incoterms 2010
by
Sandro Sans
Resume_Rajini (1)
by
rajini thumma
درباره ی بلوبری
by
دمنوش های گیاهی نیوشا
string , pointer
by
Arafat Bin Reza
Similar to 研究生のためのC++ no.4
PDF
What is template
by
Akira Takahashi
PDF
C++コミュニティーの中心でC++をDISる
by
Hideyuki Tanaka
PPTX
Visual C++で使えるC++11
by
nekko1119
PPTX
Lambda in template_final
by
Cryolite
PDF
中3女子でもわかる constexpr
by
Genya Murakami
PDF
中3女子が狂える本当に気持ちのいい constexpr
by
Genya Murakami
PDF
C++ template-primer
by
Kohsuke Yuasa
PPTX
最新C++事情 C++14-C++20 (2018年10月)
by
Akihiko Matuura
PDF
C++11のつかいかた
by
amusementcreators
PDF
テンプレートメタプログラミング as 式
by
digitalghost
PDF
リテラル文字列型までの道
by
Satoshi Sato
PDF
Effective Modern C++ 勉強会 Item26
by
Akihiro Nishimura
PDF
C++勉強会in広島プレゼン資料
by
真一 北原
PDF
わんくま同盟大阪勉強会#61
by
TATSUYA HAYAMIZU
PDF
ゲーム開発者のための C++11/C++14
by
Ryo Suzuki
PDF
boost tour 1.48.0 all
by
Akira Takahashi
PDF
C++ lecture-0
by
sunaemon
PDF
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
by
Shintarou Okada
PDF
クロージャデザインパターン
by
Moriharu Ohzu
PDF
初めてのSTL
by
HCPC: 北海道大学競技プログラミングサークル
What is template
by
Akira Takahashi
C++コミュニティーの中心でC++をDISる
by
Hideyuki Tanaka
Visual C++で使えるC++11
by
nekko1119
Lambda in template_final
by
Cryolite
中3女子でもわかる constexpr
by
Genya Murakami
中3女子が狂える本当に気持ちのいい constexpr
by
Genya Murakami
C++ template-primer
by
Kohsuke Yuasa
最新C++事情 C++14-C++20 (2018年10月)
by
Akihiko Matuura
C++11のつかいかた
by
amusementcreators
テンプレートメタプログラミング as 式
by
digitalghost
リテラル文字列型までの道
by
Satoshi Sato
Effective Modern C++ 勉強会 Item26
by
Akihiro Nishimura
C++勉強会in広島プレゼン資料
by
真一 北原
わんくま同盟大阪勉強会#61
by
TATSUYA HAYAMIZU
ゲーム開発者のための C++11/C++14
by
Ryo Suzuki
boost tour 1.48.0 all
by
Akira Takahashi
C++ lecture-0
by
sunaemon
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
by
Shintarou Okada
クロージャデザインパターン
by
Moriharu Ohzu
初めてのSTL
by
HCPC: 北海道大学競技プログラミングサークル
Recently uploaded
PDF
Gluesync:RDBMS、NoSQL,データレイク間のリアルタイム・データレプリケーション
by
株式会社クライム
PPTX
JavaScript/TypeScript実力強化書 2章のアップデート Forkwell Library
by
Yoshiki Shibukawa
PDF
N2WS Backup & Recovery と Veeam Backup for AWS
by
株式会社クライム
PDF
最高峰のストレージとバックアップ:ARTESCA+Veeam:統合型ソフトウェア
by
株式会社クライム
PDF
Veeam&WasabiでトリプルV: クラウドへのランサムウエア対策の決定コンビ
by
株式会社クライム
PDF
20251122_OWASPNagoya_takei_ITU-T,X.1060,security
by
OWASP Nagoya
Gluesync:RDBMS、NoSQL,データレイク間のリアルタイム・データレプリケーション
by
株式会社クライム
JavaScript/TypeScript実力強化書 2章のアップデート Forkwell Library
by
Yoshiki Shibukawa
N2WS Backup & Recovery と Veeam Backup for AWS
by
株式会社クライム
最高峰のストレージとバックアップ:ARTESCA+Veeam:統合型ソフトウェア
by
株式会社クライム
Veeam&WasabiでトリプルV: クラウドへのランサムウエア対策の決定コンビ
by
株式会社クライム
20251122_OWASPNagoya_takei_ITU-T,X.1060,security
by
OWASP Nagoya
研究生のためのC++ no.4
1.
C++ For Researchers 研究生のためのC++ 企画・立案
難波知宏
2.
テンプレート 第四回 2
3.
関数テンプレート 第一節 3
4.
関数テンプレートとは 4 Sample 4-1
5.
5 そうだ、max関数を作ろう
6.
sample 4-1-1 int max(int
x, int y) { return (x > y) ? x : y; } 6 関数テンプレートとは Sample 4-1 従来のプログラム double版も欲しくなった e ? a : b e が true のとき a false のとき b を返す
7.
sample 4-1-1 int max(int
x, int y) { return (x > y) ? x : y; } double max(double x, double y) { return (x > y) ? x : y; } 7 関数テンプレートとは Sample 4-1 従来のプログラム データ型が違うだけで 同じ処理なのに、 別々に記述 何とかして一つに まとめられないか?
8.
8 テ ン プ レ ー ト で で き ま す よ
9.
sample 4-1-2 template <typename
Type> Type max(Type x, Type y) { return (x > y) ? x : y; } 9 関数テンプレートとは Sample 4-1 テンプレートを使って一つにまとめる データ型に依存 しない関数 template <…> を関数の前につけると、 関数テンプレートになる.
10.
テンプレート引数の明示指定 Sample 4-2 10
11.
sample 4-2-1 template <typename
Type> Type max(Type x, Type y) { return (x > y) ? x : y; } int main() { double c = max(7, 3.0); // Compile error! } 11 テンプレート引数の明示指定 Sample 4-2 次のプログラムはコンパイルエラーになります。 テンプレート引数Typeを intとdoubleのどちらに したらいいかわからない! コンパイラ
12.
sample 4-2-1 template <typename
Type> Type max(Type x, Type y) { return (x > y) ? x : y; } int main() { double c = max<double>(7, 3.0); // OK. } 12 テンプレート引数の明示指定 Sample 4-2 <…>でテンプレート引数の型を指定すればよい。 実は、テンプレート引数 が省略された場合、 コンパイラが自動で 推論しているんだよね コンパイラ
13.
関数テンプレートの特殊化 13 Sample 4-3
14.
14 string型でもmax関数が動くようにしたい
15.
15 そんでもって string型の場合は、長さが大きい方を返したい
16.
sample 4-3-1 #include <string> template
<typename Type> Type max(Type x, Type y) { return (x > y) ? x : y; } int main() { double c = max<double>(7, 3.0); // OK. char* d = max<char*>("hoge", "hogehoge");// NG (Unexpected result). } 16 関数テンプレートの特殊化 Sample 4-3 従来のプログラム 期待通りに ならない
17.
sample 4-3-2 #include <string> template
<typename Type> Type max(Type x, Type y) { return (x > y) ? x : y; } template <> char* max(char* x, char* y) { return (strlen(x) > strlen(y)) ? x : y; } int main() { double c = max<double>(7, 3.0); // OK. char* d = max<char*>("hoge", "hogehoge"); // OK. } 17 関数テンプレートの特殊化 Sample 4-3 特殊化をすれば、文字列専用の処理ができる テンプレート引数がchar* の場合は、例外的にこの 関数が呼ばれる
18.
クラステンプレート 第二節 18
19.
19 クラスにもテンプレートの概念を適用できます
20.
クラステンプレートとは 20 Sample 4-4
21.
21 そうだ。ベクトルクラスつくろう
22.
sample 4-4-1/Vector3.h class Vector3 { public: Vector3()
… { … } Vector3(float x, float y, float z) … { … } static float dot(Vector3 a, Vector3 b) { … } float x, y, z; }; Vector3 operator +(Vector3 a, Vector3 b) { … } 22 クラステンプレートとは Sample 4-4 前回作ったベクトルクラス(の一部) float以外でも使えるようにしたい
23.
sample 4-4-2/Vector3.h template <typename
T> class Vector3 { (省略) T x, y, z; }; 23 クラステンプレートとは Sample 4-4 テンプレートベクトルクラス template <…> をクラス定義の前につけると、 クラステンプレートになる. データ型に依存 しないクラス
24.
クラステンプレートの特殊化 24 Sample 4-5
25.
25 関数テンプレートと同じように、クラステンプレート も特殊化ができます(省略)
26.
テンプレートのからくり 第三節 26
27.
テンプレートのからくり テンプレートの型引数ごとに別個にコードを生成 27
28.
sample 4-6-1 #include <iostream> template
<typename T> void func() {} int main() { printf("<int> -> %p¥n", func<int>); printf("<double> -> %p¥n", func<double>); } 実行結果 <int> -> 0095100F <double> -> 00951014 28 テンプレートのからくり 関数のアドレスを調べればわかる func<int>が出現した 時点でfunc<int>を コンパイル時に生成 コンパイラ
29.
まとめ 29
30.
template <typename T> void
f() { /* ... */ } template <typename T> class C { /* ... */ }; 30 テンプレート データ型に依存しない関数・クラスを作る仕組み template <…> を関数の前につけると 関数テンプレートを定義 template <…> をクラスの前につけると クラステンプレートを定義
31.
template <typename T> void
f() { /* ... */ } template <typename T> class C { /* ... */ }; int main() { f<int>(); C<int> c; } 31 テンプレート引数の指定 f<…> C<…> でテンプレート引数を 明示的に指定
32.
言語比較 <ジェネリック編> おまけ 32
33.
ジェネリック機能比較 C++ C# Java 実体の生成 タイミング コンパイル時
実行時 コンパイル時にキャストを挿 入し非ジェネリックに変換、 つまり実体は一つ パフォーマンス ◎ (実体別に最適化) ○ × (キャストによるオーバーヘッ ドが発生) コンパイル後の コード共有 × (プログラムサイズが爆発 する原因) ○ ○ (実体は一つしかない) 組み込み型の ジェネリック引数 ○ ○ (組み込み型の ジェネリックはク ラス型のものと は別に生成) × (クラス型のみ○) 33 このページに詳しく書いてあります
34.
sample 4-7-1/main.cpp #include <iostream> template
<typename T> class C { public: template <typename U> static void F() {} }; int main() { C<int>::F<double>(); printf("%s¥n", typeid(C<int>).name()); printf("%s¥n", typeid(C<double>).name()); } 実行結果 class C<int> class C<double> 34 言語比較 <ジェネリック編> おまけ C++のジェネリック(テンプレート)
35.
sample 4-7-2/Program.cs using System; class
C<T> { public static void F<U>() { } } class Program { static void Main(string[] args) { C<int>.F<double>(); Console.WriteLine(typeof(C<int>)); Console.WriteLine(typeof(C<float>)); } } 実行結果 C`1[System.Int32] C`1[System.Single] 35 言語比較 <ジェネリック編> おまけ C#のジェネリック
36.
sample 4-7-3/Program.java 実行結果 class C class
C 36 おまけ Javaのジェネリック 言語比較 <ジェネリック編> 型情報が抜け落ちてる…
Download