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
EN
TN
Uploaded by
Tomohiro Namba
PDF, PPTX
449 views
研究生のためのC++ no.5
研究室のゼミの資料。研究に役立つC++入門。 五回目はSTL(standard template library)。
Software
◦
Read more
0
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 27
2
/ 27
3
/ 27
4
/ 27
5
/ 27
6
/ 27
7
/ 27
8
/ 27
9
/ 27
10
/ 27
11
/ 27
12
/ 27
13
/ 27
14
/ 27
15
/ 27
16
/ 27
17
/ 27
18
/ 27
19
/ 27
20
/ 27
21
/ 27
22
/ 27
23
/ 27
24
/ 27
25
/ 27
26
/ 27
27
/ 27
More Related Content
PPTX
Swiftを勉強してrubyの コードが変化した3つの事
by
Karino Kyohei
PDF
Chapter9 一歩進んだ文法(前半)
by
itoyan110
PDF
C++11のつかいかた
by
amusementcreators
DOCX
Practica n1 ceci
by
Cecibel Curimilma
DOCX
Cecibel curimilma blog
by
Cecibel Curimilma
PDF
Practica funciones (1)
by
Cecibel Curimilma
PDF
Sintesis informativa 03 de marzo 2017
by
megaradioexpress
DOCX
Agenda cecibel
by
Cecibel Curimilma
Swiftを勉強してrubyの コードが変化した3つの事
by
Karino Kyohei
Chapter9 一歩進んだ文法(前半)
by
itoyan110
C++11のつかいかた
by
amusementcreators
Practica n1 ceci
by
Cecibel Curimilma
Cecibel curimilma blog
by
Cecibel Curimilma
Practica funciones (1)
by
Cecibel Curimilma
Sintesis informativa 03 de marzo 2017
by
megaradioexpress
Agenda cecibel
by
Cecibel Curimilma
Viewers also liked
PDF
M3 Imp Unitwise
by
Math Arulselvan
PDF
Taller Informática
by
analabradorcra
PDF
Taller Música
by
analabradorcra
PDF
Taller Inglés
by
analabradorcra
PDF
「今日から使い切る」ための GNU Parallelによる並列処理入門
by
Koji Matsuda
PPTX
Guía aval 3
by
analabradorcra
PPT
Quiz on computing scientists
by
SabahtHussein
PPT
Professionalism
by
Greg Tampus
PDF
Nuevas tecnologías
by
Carolina Cardoso
M3 Imp Unitwise
by
Math Arulselvan
Taller Informática
by
analabradorcra
Taller Música
by
analabradorcra
Taller Inglés
by
analabradorcra
「今日から使い切る」ための GNU Parallelによる並列処理入門
by
Koji Matsuda
Guía aval 3
by
analabradorcra
Quiz on computing scientists
by
SabahtHussein
Professionalism
by
Greg Tampus
Nuevas tecnologías
by
Carolina Cardoso
Similar to 研究生のためのC++ no.5
PDF
初めてのSTL
by
HCPC: 北海道大学競技プログラミングサークル
PDF
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
by
Hiro H.
PDF
C++0x in programming competition
by
yak1ex
PDF
Iterators must-go(ja)
by
Akira Takahashi
PDF
C++コミュニティーの中心でC++をDISる
by
Hideyuki Tanaka
PDF
Pfi Seminar 2010 1 7
by
Preferred Networks
PDF
Boost.PropertyMap (.pdf)
by
Cryolite
PPTX
Boost.PropertyMap (.pptx)
by
Cryolite
PDF
ゲーム開発者のための C++11/C++14
by
Ryo Suzuki
PPTX
ぱっと見でわかるC++11
by
えぴ 福田
PDF
中3女子でもわかる constexpr
by
Genya Murakami
PDF
わんくま同盟大阪勉強会#61
by
TATSUYA HAYAMIZU
PDF
クロージャデザインパターン
by
Moriharu Ohzu
PDF
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
by
Hiro H.
PDF
templateとautoの型推論
by
MITSUNARI Shigeo
PPT
C++0x in programming competition
by
yak1ex
PDF
C++によるソート入門
by
AimingStudy
PDF
boost tour 1.48.0 all
by
Akira Takahashi
PDF
最近のC++ @ Sapporo.cpp #5
by
Kohsuke Yuasa
PDF
Boost.Flyweight
by
gintenlabo
初めてのSTL
by
HCPC: 北海道大学競技プログラミングサークル
C++のSTLのコンテナ型を概観する @ Ohotech 特盛 #10(2014.8.30)
by
Hiro H.
C++0x in programming competition
by
yak1ex
Iterators must-go(ja)
by
Akira Takahashi
C++コミュニティーの中心でC++をDISる
by
Hideyuki Tanaka
Pfi Seminar 2010 1 7
by
Preferred Networks
Boost.PropertyMap (.pdf)
by
Cryolite
Boost.PropertyMap (.pptx)
by
Cryolite
ゲーム開発者のための C++11/C++14
by
Ryo Suzuki
ぱっと見でわかるC++11
by
えぴ 福田
中3女子でもわかる constexpr
by
Genya Murakami
わんくま同盟大阪勉強会#61
by
TATSUYA HAYAMIZU
クロージャデザインパターン
by
Moriharu Ohzu
2011.12.10 関数型都市忘年会 発表資料「最近書いた、関数型言語と関連する?C++プログラムの紹介」
by
Hiro H.
templateとautoの型推論
by
MITSUNARI Shigeo
C++0x in programming competition
by
yak1ex
C++によるソート入門
by
AimingStudy
boost tour 1.48.0 all
by
Akira Takahashi
最近のC++ @ Sapporo.cpp #5
by
Kohsuke Yuasa
Boost.Flyweight
by
gintenlabo
More from Tomohiro Namba
PPTX
Introduction of Unity ML-Agents
by
Tomohiro Namba
PDF
Git with Visual Studio
by
Tomohiro Namba
PDF
研究生のためのC++ no.6
by
Tomohiro Namba
PDF
研究生のためのC++ no.7
by
Tomohiro Namba
PDF
研究生のためのC++ no.4
by
Tomohiro Namba
PDF
研究生のためのC++ no.3
by
Tomohiro Namba
PDF
研究生のためのC++ no.2
by
Tomohiro Namba
Introduction of Unity ML-Agents
by
Tomohiro Namba
Git with Visual Studio
by
Tomohiro Namba
研究生のためのC++ no.6
by
Tomohiro Namba
研究生のためのC++ no.7
by
Tomohiro Namba
研究生のためのC++ no.4
by
Tomohiro Namba
研究生のためのC++ no.3
by
Tomohiro Namba
研究生のためのC++ no.2
by
Tomohiro Namba
研究生のためのC++ no.5
1.
C++ For Researchers 研究生のためのC++ 企画・立案
難波知宏
2.
STL (Standard Template Library) 第五回 2
3.
3 目次 1. コンテナの考え方 コンテナとは 2. STLのコンテナ 可変長配列 線形リスト 集合 写像 その他 3.
コンテナのアルゴリズム イテレータについて 範囲forとfor_each 全要素に対する□□
4.
コンテナの考え方 第一節 4
5.
• 連結リスト、連想配列、スタック、キュー、etc… • 配列もコンテナの一種 5 コンテナ オブジェクトの集合を表すもの Container Object Object Object
Object Object
6.
6 STL (Standard Template
Library) テンプレートを駆使したライブラリ、コンテナの実装も含む コンテナ 固定長配列 可変長配列 線形リスト 集合 写像(連想配列) スタックとキュー 優先度付きキュー アルゴリズム ソーティング 検索 走査 etc...
7.
STLのコンテナ 第二節 7
8.
vector<T> 8 可変長配列
9.
• メモリ上に連続して要素を格納 • メモリ効率が良い •
アクセス速度が速い • 挿入などの処理で容量が足りなく なると、メモリを再確保する 9 ランダムアクセス 𝑶(𝟏) 挿入/削除 𝑂(𝑛) 検索 𝑂(𝑛) 可変長配列 可変長配列 要素数を実行中に変えられる配列 size (3) capacity(5) vector<T>
10.
list<T> 10 リスト
11.
• ランダムアクセス/検索は遅い(先 頭からいちいちたどらないといけな い) • 挿入・削除操作に強い 11 ランダムアクセス
𝑂(𝑛) 挿入/削除 𝑶(𝟏) 検索 𝑂(𝑛) リスト 線形リスト 各要素をポインタで接続する list<T>
12.
set<T> 12 集合/セット
13.
• 検索に強い • 多くの場合、平衡二分探索木で 実装されている •
自動でソートされる 13 ランダムアクセス × 挿入/削除 𝑶(𝒍𝒐𝒈(𝒏)) 検索 𝑶(𝒍𝒐𝒈(𝒏)) 集合/セット 集合 要素の集合を表す set<T>
14.
map<K,V> 14 写像/マップ
15.
• 検索に強い • 多くの場合、平衡二分探索木で 実装されている •
キー順に自動でソートされる 15 ランダムアクセス 𝑶(𝒍𝒐𝒈(𝒏)) 挿入/削除 𝑶(𝒍𝒐𝒈(𝒏)) 検索 𝑶(𝒍𝒐𝒈(𝒏)) 写像/マップ 写像 キーと値のペアを保持し、キーで要素にアクセスできる map<T>
16.
コンテナのアルゴリズム 第三節 16
17.
17 コンテナの走査がしたい
18.
sample 5-01 #include <iostream> using
std::cout; int main() { int a[4] = { 1,2,3,4 }; for (int i = 0; i < 4; i++) cout << a[i] << ' '; } sample 5-02 #include <iostream> using std::cout; int main() { int a[4] = { 1,2,3,4 }; for (int* p = a; p != a + 4; p++) cout << *p << ' '; } 18 iteration 走査 従来の配列の走査 ポインタを使ってアクセス (先頭からのオフセットでアクセス) a[i] p
19.
19 リストや二分木は、メモリ上に要素が連続して いない
20.
sample 5-01 #include <iostream> using
std::cout; int main() { int a[4] = { 1,2,3,4 }; for (int i = 0; i < 4; i++) cout << a[i] << ' '; } sample 5-02 #include <iostream> using std::cout; int main() { int a[4] = { 1,2,3,4 }; for (int* p = a; p != a + 4; p++) cout << *p << ' '; } 20 iteration 走査 配列の走査 ポインタを使ってアクセス (先頭からのオフセットでアクセス) a[i] p ポインタ方式ではアクセス不可
21.
21 そこでイテレーターの登場
22.
22 イテレーター ポインタの概念を、データ構造に合わせて拡張したもの list<int> v =
{ 1,2,3,4 }; for (list<int>::iterator it = v.begin(); it != v.end(); it++) { cout << *it << ' '; } vector<int> v = { 1,2,3,4 }; for (vector<int>::iterator it = v.begin(); it != v.end(); it++) { cout << *it << ' '; } sample 5-03 sample 5-04 vector用のイテレーター list用のイテレーター
23.
• データ構造に合わせて、++演算子をオーバーロードしている 例)vectorなら単純にアドレスを加算 listならポインタに従って次の要素に移動 • ->演算子や*演算子をオーバーロードしているので ポインタと同じ感覚で使える 23 イテレーターのからくり 統一のインターフェース による走査が可能
24.
24 イテレーターによるループの欠点: イテレーターの型名が長い
25.
vector<int> v =
{ 1,2,3,4 }; for (auto it = v.begin(); it != v.end(); it++) { cout << *it << ' '; } sample 5-06 vector<int> v = { 1,2,3,4 }; for (int x : v) { cout << x << ' '; } 25 範囲for文 範囲for文 イテレーターによる走査を簡略化した記法 auto x = … で自動で型決定 (≠なんでも格納できる変数) for (Type var : container) { … } でcontainerの各要素が変数var に格納される
26.
vector<int> v =
{ 1,2,3,4 }; for (auto it = v.begin(); it != v.end(); it++) { cout << *it << ' '; } sample 5-07 vector<int> v = { 1,2,3,4 }; for_each(v.begin(), v.end(), [](int x) { cout << x << ' '; }); 26 for_each for_eachとラムダ式 コンテナに対し、各要素に対して何をさせるかを定義した関数を渡し て処理する [](…){…} でここだけで使用する関数を定義 (ラムダ式)
27.
sample 5-08 list<int> v
= { 1,2,3,4,5 }; // 条件に合う要素を削除する v.remove_if([](int x) { return x < 3; }); for (auto& x : v) cout << x << ' '; cout << endl; // 条件に合う要素を検索する auto it = find_if(v.begin(), v.end(), [](int x) { return x > 4; }); cout << *it << endl; 27 ラムダ式とSTLの合わせ技 実行結果 3 4 5 5 remove_if 条件を満たす要素を削除 find_if 条件を満たす(最初の)要素の イテレーターの取得
Download