SlideShare uma empresa Scribd logo
1 de 88
1
2010/10/23 Cryolite
Boost.勉強会 #3 関西
S t a
T
L
a
a
a
e m
n d dr
rri b
p l t e
y
自己紹介
• 名前: Cryolite
• 特技: C++ とかできます
2
STLとは「コンテナ×
イテレータ×アルゴリズム」
3
コンテナ アルゴリズム
find
sort
remove
・・・・・
vector
deque
list
・・・・・
STLとは「コンテナ×
イテレータ×アルゴリズム」
4
コンテナ アルゴリズム
find
sort
remove
・・・・・
vector
deque
list
・・・・・
STLとは「コンテナ×
イテレータ×アルゴリズム」
5
コンテナ アルゴリズム
find
sort
remove
・・・・・
vector
deque
list
・・・・・
(組み合わせの数)
=(データ構造の数)×(アルゴリズムの数)
かける
STLとは「コンテナ×
イテレータ×アルゴリズム」
コンテナ アルゴリズム
find
sort
remove
・・・・・
vector
deque
list
・・・・・
イテレータ
6
STLとは「コンテナ×
イテレータ×アルゴリズム」
コンテナ アルゴリズム
find
sort
remove
・・・・・
vector
deque
list
・・・・・
イテレータ
(組み合わせの数)
=(データ構造の数)+(アルゴリズムの数)
たす
7
STLとは「コンテナ×
イテレータ×アルゴリズム」
コンテナ アルゴリズム
findvector
deque イテレータ
8
STLとは「コンテナ×
イテレータ×アルゴリズム」
コンテナ アルゴリズム
findvector
deque イテレータ
コンテナ側に
変化があっても……
9
STLとは「コンテナ×
イテレータ×アルゴリズム」
コンテナ アルゴリズム
findvector
deque イテレータ
コンテナ側に
変化があっても……
アルゴリズム側に
影響しない
10
STLとは「コンテナ×
イテレータ×アルゴリズム」
コンテナ アルゴリズム
findvector
deque イテレータ
コンテナ側に
変化があっても……
アルゴリズム側に
影響しない
コンテナ側の変化に
対するファイアウォール 11
イテレータに注目!
コンテナ アルゴリズム
find
sort
remove
・・・・・
vector
deque
list
・・・・・
イテレータ
ちうもく!!
12
コンテナのイテレータには
3つの機能がある!
13
コンテナのイテレータは
• コンテナ中の場所(コンテナ中の1要素)を
指し示す
14
// 同じ場所なら true だよ!
iter == jter;
コンテナのイテレータは
• コンテナ中の場所(コンテナ中の1要素)を
指し示す
• コンテナ中の
全要素を列挙する
15
// 同じ場所なら true だよ!
iter == jter;
// 次の場所に移動するよ!
// 繰り返せば列挙になるよ!
++iter;
コンテナのイテレータは
• コンテナ中の場所(コンテナ中の1要素)を
指し示す
• コンテナ中の
全要素を列挙する
• 指し示している場所の値を取り出せる
16
// 同じ場所なら true だよ!
iter == jter;
// 次の場所に移動するよ!
// 繰り返せば列挙になるよ!
++iter;
// あたいったら取り出すね!
*iter;
イテレータの3つの機能
(※イメージです)
17
2 3 5 7 11 13 17 ・・・
コンテナ
イテレータの3つの機能
(※イメージです)
18
2 3 5 7 11 13 17 ・・・
場所を指示
コンテナ
イテレータの3つの機能
(※イメージです)
19
2 3 5 7 11 13 17 ・・・
列挙する場所を指示
コンテナ
イテレータの3つの機能
(※イメージです)
20
2 3 5 7 11 13 17 ・・・
5
値を取り出す
列挙する場所を指示
コンテナ
STL 最大の欠点
– Cryolite の眼: C++pro
21
Inspired by http://itpro.nikkeibp.co.jp/article/Watcher/20101015/352993/
STL 最大の欠点
– Cryolite の眼: C++pro
配列†のインデックスを
再評価してもいいのでは?
22
Inspired by http://itpro.nikkeibp.co.jp/article/Watcher/20101015/352993/
STL 最大の欠点
– Cryolite の眼: C++pro
23
配列†のインデックスを
再評価してもいいのでは?
筆者がここで言いたいのは,
そろそろ配列†のインデック
スを使ってみてもいいので
は?ということだ.
†一般にはランダムアクセスコンテナ
Inspired by http://itpro.nikkeibp.co.jp/article/Watcher/20101015/352993/
24
温故知新
– 故きを温ね新しきを知る
25
古代暗黒魔法が封印された禁書を開
いてみると,そこには古代語で書か
れたプログラムとおぼしきものが!
温故知新
– 故きを温ね新しきを知る
26
古代暗黒魔法が封印された禁書を開
いてみると,そこには古代語で書か
れたプログラムとおぼしきものが!
vector<int> v;
.....
for (size_t i = 0; i != v.size(); ++i) {
cout << v[i] << endl;
}
温故知新
– 故きを温ね新しきを知る
27
古代暗黒魔法が封印された禁書を開
いてみると,そこには古代語で書か
れたプログラムとおぼしきものが!
vector<int> v;
.....
for (size_t i = 0; i != v.size(); ++i) {
cout << v[i] << endl;
}
温故知新
– 故きを温ね新しきを知る
ランダムアクセスコンテナならイ
テレータを使わなくてもインデック
スで要素を列挙できるもんっ!
• コンテナ中の場所を指し示す
• コンテナ中の
全要素を列挙する
• 指し示している場所の値を取り出せる
28
// 同じ場所なら true だよ!
iter == jter;
// 次の場所に移動するよ!
// 繰り返せば列挙になるよ!
++iter;
// あたいったら取り出すね!
*iter;
イテレータの機能を
思い出してみよう!
29
ランダムアクセスコンテナの
インデックスは……
• コンテナ中の場所を指し示す
30
// 同じ場所なら true だよ!
i == j;
ランダムアクセスコンテナの
インデックスは……
• コンテナ中の場所を指し示す
• コンテナ中の
全要素を列挙する
31
// 同じ場所なら true だよ!
i == j;
// 次の場所に移動するよ!
// 繰り返せば列挙になるよ!
++i;
ランダムアクセスコンテナの
インデックスは……
• コンテナ中の場所を指し示す
• コンテナ中の
全要素を列挙する
• 指し示している場所の値を取り出せ……る?
32
// 同じ場所なら true だよ!
i == j;
// 次の場所に移動するよ!
// 繰り返せば列挙になるよ!
++i;
// コ,コンテナオブジェクトさえあれば!
v[i];
ランダムアクセスコンテナの
インデックスは……
値の取り出し方を
抽象化しましょう ← 結論
33
値の取り出し方を
抽象化しましょう ← 結論
34
イテレータもインデックスも
コンテナ中の場所を指し示せる
値の取り出し方を
抽象化しましょう ← 結論
35
v[i];
イテレータもインデックスも
コンテナ中の場所を指し示せる
*iter;
値を取り出す構文が違う
値の取り出し方を
抽象化しましょう ← 結論
36
v[i];
イテレータもインデックスも
コンテナ中の場所を指し示せる
*iter;
値の取り出し方を抽象化しましょう
値を取り出す構文が違う
get(pm, desc);
値の取り出し方を
抽象化しましょう ← 結論
37
v[i];
イテレータもインデックスも
コンテナ中の場所を指し示せる
*iter;
値の取り出し方を抽象化しましょう
値を取り出す構文が違う
get(pm, desc);
イテレータだったりインデックスだったり
【再掲】
イテレータの機能(イメージ)
38
2 3 5 7 11 13 17 ・・・
5
値を取り出す
列挙する場所を指示
コンテナ
値の取り出し方を
抽象化したイメージへ……
・・・
モノの集まり
39
・・・
1つのモノを指示
モノの集まり
40
値の取り出し方を
抽象化したイメージへ……
・・・
列挙する1つのモノを指示
モノの集まり
41
値の取り出し方を
抽象化したイメージへ……
・・・
5
列挙する1つのモノを指示
モノの集まり
32 7
モノと値を関連付ける
11 13 19 42
値の取り出し方を
抽象化したイメージへ……
疑問
・・・
5
列挙する1つのモノを指示
モノの集まり
32 7
モノと値を関連付ける
11 13 19
こんな風に考えて
何がうれしいの?
43
疑問への回答その1
・・・
5
列挙する1つのモノを指示
モノの集まり
32 7
モノと値を関連付ける
11 13 19
こんな風に考えて
何がうれしいの?
44
モノの指し示し方を
柔軟にできるよ!
イテレータ,インデックス, etc…
・・・
5
列挙する1つのモノを指示
モノの集まり
32 7
モノと値を関連付ける
11 13 19
こんな風に考えて
何がうれしいの?
45
モノに対して柔軟に
値を関連付けられるよ!
疑問への回答その2
・・・
1
モノの集まり
11 1
定数を関連付ける
1 1 1 46
疑問への回答その2 (例1)
・・・
モノの集まり
3×22×2 7×2 11×2 13×2 19×2 47
5×2
値を加工して関連付ける
疑問への回答その2 (例2)
・・・
5
列挙する1つのモノを指示
モノの集まり
32 7
モノと値を関連付ける
11 13 19
こんな風に考えて
何がうれしいの?
1つのモノに対して複数の
値を関連付けられるよ!
48
疑問への回答その3
・・・
49
疑問への回答その3 (例)
・・・
532 7 11 13 19
モノと値を関連付けその1
50
疑問への回答その3 (例)
・・・
532 7 11 13 19
‘H’ ‘e’ ‘l’ ‘l’ ‘o’ ‘,’ ‘_’
モノと値を関連付けその1
モノと値を関連付けその2
51
疑問への回答その3 (例)
それぞれの機能を担う
オブジェクトに名前を付けよう!
・・・
5
列挙する1つのモノを指示
モノの集まり
32 7
モノと値を関連付ける
11 13 19 52
・・・
5
列挙する
モノの集まり
32 7
モノと値を関連付ける
11 13 19 53
デスクリプタ
それぞれの機能を担う
オブジェクトに名前を付けよう!
・・・
5
モノの集まり
32 7
モノと値を関連付ける
11 13 19 54
デスクリプタ (デスクリプタを列挙する)
イテレータ
それぞれの機能を担う
オブジェクトに名前を付けよう!
・・・
5
モノの集まり
32 7
プロパティマップ
11 13 19 55
デスクリプタ (デスクリプタを列挙する)
イテレータ
それぞれの機能を担う
オブジェクトに名前を付けよう!
56
Boost.PropertyMap
2010/10/23 Cryolite
Boost.勉強会 #3 関西
プロパティマップとは
57
デスクリプタを受け取って,値を返す
インタフェイスを定義
デスクリプタと書き込む値を受け取って,
書き込むインタフェイスを定義
get(pm, desc); // 値が返る
put(pm, desc, val);
プロパティマップとは
• イテレータにおける「値を取り出す」「値を
書き込む」機能に対応
• うれしいこと3つ
– モノの指し示し方が超柔軟に
– モノに関連付けられた値の取り出し方・書き込
み方が超柔軟に
– 1つのモノに対して複数の値・書き込み先を関
連付ける
58
プロパティマップとは
59
このライブラリだけ
説明しても意味不明!
STL のコンテナとアルゴリズムの
関係を話さずにイテレータを説明
してもおそらく意味不明!
≒
イテレータ in STL
60
コンテナ アルゴリズム
find
sort
remove
・・・・・
vector
deque
list
・・・・・
イテレータ
プロパティマップ
in 汎用グラフライブラリ
61
グラフ
データ構造
汎用グラフ
アルゴリズム
Dijkstra
DFS
A*
・・・・・
隣接リスト
隣接行列
edge list
・・・・・
イテレータ
デスクリプタ
プロパティ
マップ
ビジター
プロパティマップ
in 汎用グラフライブラリ
62
グラフ
データ構造
汎用グラフ
アルゴリズム
Dijkstra
DFS
A*
・・・・・
隣接リスト
隣接行列
edge list
・・・・・
イテレータ
デスクリプタ
プロパティ
マップ
ビジター
Boost.PropertyMap の本領
– グラフにおける汎用アルゴリズム
63
a
b
c
d
e
f
グラフのデータ構造とプロパティマップ
- グラフのデータ構造は多種多様
64
a
b
c
d
e
f
a b d g
b c d
a c f
a c g
b f
c d e
隣接リスト (例1)
グラフのデータ構造とプロパティマップ
- グラフのデータ構造は多種多様
65
a
b
c
d
e
f
a b d g
b c d
a c f
a c g
b f
c d e
隣接リスト (例2)
グラフのデータ構造とプロパティマップ
- グラフのデータ構造は多種多様
66
隣接行列
0 1 1 1 0 0
1 0 1 0 1 0
1 1 0 1 0 1
1 0 1 0 0 1
0 1 0 0 0 1
0 0 1 1 1 0
a b c d e f
a
b
c
d
e
f
グラフアルゴリズムは頂点や
辺に関連付けられた値を駆使
67
グラフアルゴリズムは
• 頂点の重み,インデックス,親,色
• スタートから各頂点までの距離
• 辺の重み,インデックス
• 辺のインデックス
などを使わないと実行できない
色々なグラフデータ構造に対して
これらをどう関連付けるのか?
デスクリプタ・イテレータ・プロパティマッ
プによる汎用なグラフアルゴリズム
68
⇒(デスクリプタを返す) イテレータを使います
頂点や辺を一意に特定する必要があります
頂点や辺に様々な値を関連付ける必要があります
頂点や辺を様々な形で列挙する必要があります
⇒頂点や辺を指すデスクリプタを使います
⇒プロパティマップを使います
具体的な例 – ランダムアク
セスコンテナ & イテレータ
69
vector<Edge>
struct Edge {
double getWeight() const;
void setWeight(double w);
};
double get(WeightPMap, Iterator iter) {
return iter->getWeight();
}
辺の重みの
読み出し
iter
具体的な例 – ランダムアク
セスコンテナ & イテレータ
70
vector<Edge>
struct Edge {
double getWeight() const;
void setWeight(double w);
};
void put(WeightPMap, Iterator iter, double val) {
iter->setWeight(val);
}
辺の重みの
書き込み
iter
具体的な例 – ランダムアク
セスコンテナ & イテレータ
71
vector<Edge>
struct IteratorIndexPMap {
Iterator first_; // = v.begin()
};
size_t get(IteratorOffsetPMap pm, Iterator iter) {
return iter - pm.first_;
} 辺のインデックスの
読み出し (read-only)
iter
具体的な例 – ランダムアク
セスコンテナ & インデックス
72
vector<Edge>
struct Edge {
double getWeight() const;
void setWeight(double w);
};
struct WeightPMap { vector<Edge> &v_; };
double get(WeightPMap pm, Index idx) {
return pm.v_[idx].getWeight();
}
辺の重みの
読み出し
idx
具体的な例 – ランダムアク
セスコンテナ & インデックス
73
vector<Edge>
struct Edge {
double getWeight() const;
void setWeight(double w);
};
struct WeightPMap { vector<Edge> &v_; };
void put(WeightPMap pm, Index idx, double val) {
pm.v_[idx].setWeight(val);
}
辺の重みの
書き込み
idx
具体的な例 – ランダムアク
セスコンテナ & インデックス
74
vector<Edge>
struct IdentityPMap {};
size_t get(IdentityPMap, Index idx) {
return idx;
} 辺のインデックスの
読み出し (read-only)
idx
様々なプロパティマップの例
75
vector<Edge>
0 1 2 3 4 インデックス
76
vector<Edge>
0 1 2 3 4 インデックス
another_vec[idx]
2 3 5 7 11
様々なプロパティマップの例
vector<Edge>
77
0 1 2 3 4 インデックス
another_vec[idx]
2 3 5 7 11
様々なプロパティマップの例インデックスを踏み台にして,
他のランダムアクセスコンテナで
別の値をさらに関連付ける
Edge クラスが元々持っていない
種類の値を非侵入的に関連付け
78
list<Edge>
double get(WeightPMap, Iterator iter) {
return iter->getWeight();
}
void put(WeightPMap, Iterator iter, double val) {
iter->setWeight(val);
}
iter
様々なプロパティマップの例
79
list<Edge>
unordered_map<Iterator, double>
2 3 5 7 11
iter
様々なプロパティマップの例
80
list<Edge>
unordered_map<Iterator, size_t>
0 1 2 3 4
iter
インデックス
様々なプロパティマップの例
81
list<Edge>
unordered_map<Iterator, size_t>
0 1 2 3 4
iter
インデックス
2 3 5 7 11
another_vec[idx]
様々なプロパティマップの例
様々なプロパティマップの例
list<Edge>
82
unordered_map<Iterator, size_t>
0 1 2 3 4
iter
インデックス
2 3 5 7 11
another_vec[idx]
実メモリ上に記録した
インデックスを踏み台にして,
他のランダムアクセスコンテナで
別の値をさらに関連付ける
Edge クラスが元々持っていない
種類の値を非侵入的に関連付け
プロパティマップ
in 汎用グラフライブラリ
83
グラフデータ構造
汎用グラフアルゴリズム
プロパティマップ
get(pm, desc), put(pm, desc, val)
プロパティマップ
in 汎用グラフライブラリ
84
グラフデータ構造
汎用グラフアルゴリズム
プロパティマップ
get(pm, desc), put(pm, desc, val)
アルゴリズムは
プロパティマップのみに依存
どんなデータ構造に対しても
汎用で再利用可能
85
ダイクストラ法で必要なプロパティ
種類 Read / Write
頂点 距離 Read & Write
先行頂点 Read & Write
インデックス Read
辺 重み Read
グラフアルゴリズムに
対する要求も多種多様
86
ダイクストラ法で必要なプロパティ
種類 Read / Write
頂点 距離 Read & Write
先行頂点 Read & Write
インデックス Read
辺 重み Read
ゴールまでの最小の辺の
数が知りたいだけなんだけど
グラフアルゴリズムに
対する要求も多種多様
辺の重みプロパティマップが
定数1を返せばよい
87
ダイクストラ法で必要なプロパティ
種類 Read / Write
頂点 距離 Read & Write
先行頂点 Read & Write
インデックス Read
辺 重み Read
ゴールまでの最短距離だけが知りたい
実際の経路は別に分からなくてもよいのだが
グラフアルゴリズムに
対する要求も多種多様
先行頂点の書き込みプロパティマップに
何もしないダミーを設定すればよい
プロパティマップ – まとめ
• イテレータにおける「値を取り出す」「値を
書き込む」機能の抽象インタフェイス定義
• うれしいこと3つ
– モノの指し示し方が超柔軟に
– モノに関連付けられた値の取り出し方・書き込
み方が超柔軟に
– 1つのモノに対して複数の値・書き込み先を関
連付ける
• 汎用グラフライブラリで威力を発揮 88

Mais conteúdo relacionado

Mais procurados

各言語の k-means 比較
各言語の k-means 比較各言語の k-means 比較
各言語の k-means 比較y-uti
 
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムTakuya Akiba
 
色々なダイクストラ高速化
色々なダイクストラ高速化色々なダイクストラ高速化
色々なダイクストラ高速化yosupo
 
C++0x 言語の未来を語る
C++0x 言語の未来を語るC++0x 言語の未来を語る
C++0x 言語の未来を語るAkira Takahashi
 
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~Takuya Akiba
 
協調フィルタリングを利用した推薦システム構築
協調フィルタリングを利用した推薦システム構築協調フィルタリングを利用した推薦システム構築
協調フィルタリングを利用した推薦システム構築Masayuki Ota
 
スタートHaskell2 型を信じろ
スタートHaskell2 型を信じろスタートHaskell2 型を信じろ
スタートHaskell2 型を信じろSatoshi KOJIMA
 
函数プログラミングの エッセンスと考え方
函数プログラミングのエッセンスと考え方函数プログラミングのエッセンスと考え方
函数プログラミングの エッセンスと考え方啓 小笠原
 
コンピュータービジョン最先端ガイド2 3.4ベクトルデータに対するカーネル法(SVM)
コンピュータービジョン最先端ガイド2 3.4ベクトルデータに対するカーネル法(SVM) コンピュータービジョン最先端ガイド2 3.4ベクトルデータに対するカーネル法(SVM)
コンピュータービジョン最先端ガイド2 3.4ベクトルデータに対するカーネル法(SVM) Takahiro (Poly) Horikawa
 
Clustering _ishii_2014__ch10
Clustering  _ishii_2014__ch10Clustering  _ishii_2014__ch10
Clustering _ishii_2014__ch10Kota Mori
 
Deep learning _linear_algebra___probablity___information
Deep learning _linear_algebra___probablity___informationDeep learning _linear_algebra___probablity___information
Deep learning _linear_algebra___probablity___informationtakutori
 
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法Takuya Akiba
 
Cvpr2011 reading-tsubosaka
Cvpr2011 reading-tsubosakaCvpr2011 reading-tsubosaka
Cvpr2011 reading-tsubosaka正志 坪坂
 
動的計画法入門(An introduction to Dynamic Programming)
動的計画法入門(An introduction to Dynamic Programming)動的計画法入門(An introduction to Dynamic Programming)
動的計画法入門(An introduction to Dynamic Programming)kakira9618
 
"Puzzle-Based Automatic Testing: Bringing Humans into the Loop by Solving Puz...
"Puzzle-Based Automatic Testing: Bringing Humans into the Loop by Solving Puz..."Puzzle-Based Automatic Testing: Bringing Humans into the Loop by Solving Puz...
"Puzzle-Based Automatic Testing: Bringing Humans into the Loop by Solving Puz...nkazuki
 

Mais procurados (15)

各言語の k-means 比較
各言語の k-means 比較各言語の k-means 比較
各言語の k-means 比較
 
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
 
色々なダイクストラ高速化
色々なダイクストラ高速化色々なダイクストラ高速化
色々なダイクストラ高速化
 
C++0x 言語の未来を語る
C++0x 言語の未来を語るC++0x 言語の未来を語る
C++0x 言語の未来を語る
 
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~
 
協調フィルタリングを利用した推薦システム構築
協調フィルタリングを利用した推薦システム構築協調フィルタリングを利用した推薦システム構築
協調フィルタリングを利用した推薦システム構築
 
スタートHaskell2 型を信じろ
スタートHaskell2 型を信じろスタートHaskell2 型を信じろ
スタートHaskell2 型を信じろ
 
函数プログラミングの エッセンスと考え方
函数プログラミングのエッセンスと考え方函数プログラミングのエッセンスと考え方
函数プログラミングの エッセンスと考え方
 
コンピュータービジョン最先端ガイド2 3.4ベクトルデータに対するカーネル法(SVM)
コンピュータービジョン最先端ガイド2 3.4ベクトルデータに対するカーネル法(SVM) コンピュータービジョン最先端ガイド2 3.4ベクトルデータに対するカーネル法(SVM)
コンピュータービジョン最先端ガイド2 3.4ベクトルデータに対するカーネル法(SVM)
 
Clustering _ishii_2014__ch10
Clustering  _ishii_2014__ch10Clustering  _ishii_2014__ch10
Clustering _ishii_2014__ch10
 
Deep learning _linear_algebra___probablity___information
Deep learning _linear_algebra___probablity___informationDeep learning _linear_algebra___probablity___information
Deep learning _linear_algebra___probablity___information
 
プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法プログラミングコンテストでの動的計画法
プログラミングコンテストでの動的計画法
 
Cvpr2011 reading-tsubosaka
Cvpr2011 reading-tsubosakaCvpr2011 reading-tsubosaka
Cvpr2011 reading-tsubosaka
 
動的計画法入門(An introduction to Dynamic Programming)
動的計画法入門(An introduction to Dynamic Programming)動的計画法入門(An introduction to Dynamic Programming)
動的計画法入門(An introduction to Dynamic Programming)
 
"Puzzle-Based Automatic Testing: Bringing Humans into the Loop by Solving Puz...
"Puzzle-Based Automatic Testing: Bringing Humans into the Loop by Solving Puz..."Puzzle-Based Automatic Testing: Bringing Humans into the Loop by Solving Puz...
"Puzzle-Based Automatic Testing: Bringing Humans into the Loop by Solving Puz...
 

Destaque

Introduction to programming competition [revised]
Introduction to programming competition [revised]Introduction to programming competition [revised]
Introduction to programming competition [revised]yak1ex
 
パッケージングの今
パッケージングの今パッケージングの今
パッケージングの今Atsushi Odagiri
 
Pythonではじめる競技プログラミング
Pythonではじめる競技プログラミングPythonではじめる競技プログラミング
Pythonではじめる競技プログラミングcocodrips
 
Boost study meeting opening 4
Boost study meeting opening 4Boost study meeting opening 4
Boost study meeting opening 4Akira Takahashi
 
The Earth is not flat; but it's not round either (Geography on Boost.Geometry)
The Earth is not flat; but it's not round either (Geography on Boost.Geometry)The Earth is not flat; but it's not round either (Geography on Boost.Geometry)
The Earth is not flat; but it's not round either (Geography on Boost.Geometry)Vissarion Fisikopoulos
 
boost::shared_ptr tutorial
boost::shared_ptr tutorialboost::shared_ptr tutorial
boost::shared_ptr tutorialNU_Pan
 
Boost勉強会 #10 ディスカッションまとめ
Boost勉強会 #10 ディスカッションまとめBoost勉強会 #10 ディスカッションまとめ
Boost勉強会 #10 ディスカッションまとめSigureya
 
ゲーム開発経営ゲーム
ゲーム開発経営ゲームゲーム開発経営ゲーム
ゲーム開発経営ゲームYuki Miyatake
 
3DCAD@VDI活用とCADデータ管理のロードマップ
3DCAD@VDI活用とCADデータ管理のロードマップ3DCAD@VDI活用とCADデータ管理のロードマップ
3DCAD@VDI活用とCADデータ管理のロードマップDell TechCenter Japan
 
3D CADと3Dプリンタ体験セミナー #1
3D CADと3Dプリンタ体験セミナー #13D CADと3Dプリンタ体験セミナー #1
3D CADと3Dプリンタ体験セミナー #1Kou Ouchi
 
Unity MeshとColliderについて
Unity MeshとColliderについてUnity MeshとColliderについて
Unity MeshとColliderについてSelf Norl
 

Destaque (20)

C++ tips4 cv修飾編
C++ tips4 cv修飾編C++ tips4 cv修飾編
C++ tips4 cv修飾編
 
Introduction to programming competition [revised]
Introduction to programming competition [revised]Introduction to programming competition [revised]
Introduction to programming competition [revised]
 
パッケージングの今
パッケージングの今パッケージングの今
パッケージングの今
 
Pythonではじめる競技プログラミング
Pythonではじめる競技プログラミングPythonではじめる競技プログラミング
Pythonではじめる競技プログラミング
 
CG基礎3 メタリンク
CG基礎3 メタリンクCG基礎3 メタリンク
CG基礎3 メタリンク
 
Boost study meeting opening 4
Boost study meeting opening 4Boost study meeting opening 4
Boost study meeting opening 4
 
ABC2015 Summer LT
ABC2015 Summer LTABC2015 Summer LT
ABC2015 Summer LT
 
The Earth is not flat; but it's not round either (Geography on Boost.Geometry)
The Earth is not flat; but it's not round either (Geography on Boost.Geometry)The Earth is not flat; but it's not round either (Geography on Boost.Geometry)
The Earth is not flat; but it's not round either (Geography on Boost.Geometry)
 
boost::shared_ptr tutorial
boost::shared_ptr tutorialboost::shared_ptr tutorial
boost::shared_ptr tutorial
 
boost - std - C#
boost - std - C#boost - std - C#
boost - std - C#
 
Boost勉強会 #10 ディスカッションまとめ
Boost勉強会 #10 ディスカッションまとめBoost勉強会 #10 ディスカッションまとめ
Boost勉強会 #10 ディスカッションまとめ
 
Glfw3,OpenGL,GUI
Glfw3,OpenGL,GUI Glfw3,OpenGL,GUI
Glfw3,OpenGL,GUI
 
boost and c++11
boost and c++11boost and c++11
boost and c++11
 
ゲーム開発経営ゲーム
ゲーム開発経営ゲームゲーム開発経営ゲーム
ゲーム開発経営ゲーム
 
3DCAD@VDI活用とCADデータ管理のロードマップ
3DCAD@VDI活用とCADデータ管理のロードマップ3DCAD@VDI活用とCADデータ管理のロードマップ
3DCAD@VDI活用とCADデータ管理のロードマップ
 
Boost container feature
Boost container featureBoost container feature
Boost container feature
 
Boost Tour 1_58_0 merge
Boost Tour 1_58_0 mergeBoost Tour 1_58_0 merge
Boost Tour 1_58_0 merge
 
Boost tour 1.60.0
Boost tour 1.60.0Boost tour 1.60.0
Boost tour 1.60.0
 
3D CADと3Dプリンタ体験セミナー #1
3D CADと3Dプリンタ体験セミナー #13D CADと3Dプリンタ体験セミナー #1
3D CADと3Dプリンタ体験セミナー #1
 
Unity MeshとColliderについて
Unity MeshとColliderについてUnity MeshとColliderについて
Unity MeshとColliderについて
 

Semelhante a Boost.PropertyMap (.pptx)

Algorithm 速いアルゴリズムを書くための基礎
Algorithm 速いアルゴリズムを書くための基礎Algorithm 速いアルゴリズムを書くための基礎
Algorithm 速いアルゴリズムを書くための基礎Kenji Otsuka
 
第1回R勉強会@東京
第1回R勉強会@東京第1回R勉強会@東京
第1回R勉強会@東京Yohei Sato
 
Euler 標数は測度ですか??
Euler 標数は測度ですか??Euler 標数は測度ですか??
Euler 標数は測度ですか??Tatsuki SHIMIZU
 
すごいHaskell読書会 第7章 (前編)
すごいHaskell読書会 第7章 (前編)すごいHaskell読書会 第7章 (前編)
すごいHaskell読書会 第7章 (前編)Suguru Hamazaki
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界Preferred Networks
 
Material
MaterialMaterial
Material_TUNE_
 
SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​
SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​
SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​SSII
 
programming camp 2008, introduction of programming, algorithm
programming camp 2008, introduction of programming, algorithmprogramming camp 2008, introduction of programming, algorithm
programming camp 2008, introduction of programming, algorithmHiro Yoshioka
 
今日からはじめる微分方程式
今日からはじめる微分方程式今日からはじめる微分方程式
今日からはじめる微分方程式Ryo Kaji
 
研究生のためのC++ no.3
研究生のためのC++ no.3研究生のためのC++ no.3
研究生のためのC++ no.3Tomohiro Namba
 
[FE]配列へのデータ格納について.pdf
[FE]配列へのデータ格納について.pdf[FE]配列へのデータ格納について.pdf
[FE]配列へのデータ格納について.pdfc w
 
闇魔術を触ってみた
闇魔術を触ってみた闇魔術を触ってみた
闇魔術を触ってみたSatoshi Sato
 
「現実世界に活かす数学」 (麻布高等学校、教養総合、数学講義 5 回目)
「現実世界に活かす数学」 (麻布高等学校、教養総合、数学講義 5 回目)「現実世界に活かす数学」 (麻布高等学校、教養総合、数学講義 5 回目)
「現実世界に活かす数学」 (麻布高等学校、教養総合、数学講義 5 回目)Kensuke Otsuki
 
データとは何か
データとは何かデータとは何か
データとは何かKenta Suzuki
 
PythonによるDeep Learningの実装
PythonによるDeep Learningの実装PythonによるDeep Learningの実装
PythonによるDeep Learningの実装Shinya Akiba
 

Semelhante a Boost.PropertyMap (.pptx) (20)

Algorithm 速いアルゴリズムを書くための基礎
Algorithm 速いアルゴリズムを書くための基礎Algorithm 速いアルゴリズムを書くための基礎
Algorithm 速いアルゴリズムを書くための基礎
 
Tokyo r27
Tokyo r27Tokyo r27
Tokyo r27
 
第1回R勉強会@東京
第1回R勉強会@東京第1回R勉強会@東京
第1回R勉強会@東京
 
6 Info Theory
6 Info Theory6 Info Theory
6 Info Theory
 
実用Brainf*ckプログラミング
実用Brainf*ckプログラミング実用Brainf*ckプログラミング
実用Brainf*ckプログラミング
 
Euler 標数は測度ですか??
Euler 標数は測度ですか??Euler 標数は測度ですか??
Euler 標数は測度ですか??
 
Q13
Q13Q13
Q13
 
すごいHaskell読書会 第7章 (前編)
すごいHaskell読書会 第7章 (前編)すごいHaskell読書会 第7章 (前編)
すごいHaskell読書会 第7章 (前編)
 
ウェーブレット木の世界
ウェーブレット木の世界ウェーブレット木の世界
ウェーブレット木の世界
 
Material
MaterialMaterial
Material
 
Coursera "Neural Networks"
Coursera "Neural Networks"Coursera "Neural Networks"
Coursera "Neural Networks"
 
SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​
SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​
SSII2022 [TS3] コンテンツ制作を支援する機械学習技術​〜 イラストレーションやデザインの基礎から最新鋭の技術まで 〜​
 
programming camp 2008, introduction of programming, algorithm
programming camp 2008, introduction of programming, algorithmprogramming camp 2008, introduction of programming, algorithm
programming camp 2008, introduction of programming, algorithm
 
今日からはじめる微分方程式
今日からはじめる微分方程式今日からはじめる微分方程式
今日からはじめる微分方程式
 
研究生のためのC++ no.3
研究生のためのC++ no.3研究生のためのC++ no.3
研究生のためのC++ no.3
 
[FE]配列へのデータ格納について.pdf
[FE]配列へのデータ格納について.pdf[FE]配列へのデータ格納について.pdf
[FE]配列へのデータ格納について.pdf
 
闇魔術を触ってみた
闇魔術を触ってみた闇魔術を触ってみた
闇魔術を触ってみた
 
「現実世界に活かす数学」 (麻布高等学校、教養総合、数学講義 5 回目)
「現実世界に活かす数学」 (麻布高等学校、教養総合、数学講義 5 回目)「現実世界に活かす数学」 (麻布高等学校、教養総合、数学講義 5 回目)
「現実世界に活かす数学」 (麻布高等学校、教養総合、数学講義 5 回目)
 
データとは何か
データとは何かデータとは何か
データとは何か
 
PythonによるDeep Learningの実装
PythonによるDeep Learningの実装PythonによるDeep Learningの実装
PythonによるDeep Learningの実装
 

Mais de Cryolite

左と右の話
左と右の話左と右の話
左と右の話Cryolite
 
Lambda in template_final
Lambda in template_finalLambda in template_final
Lambda in template_finalCryolite
 
Allocators@C++11
Allocators@C++11Allocators@C++11
Allocators@C++11Cryolite
 
家に帰るまでが遠足です
家に帰るまでが遠足です家に帰るまでが遠足です
家に帰るまでが遠足ですCryolite
 
Destructive Call
Destructive CallDestructive Call
Destructive CallCryolite
 
Boost.PropertyMap (.pdf)
Boost.PropertyMap (.pdf)Boost.PropertyMap (.pdf)
Boost.PropertyMap (.pdf)Cryolite
 
shared_ptr & weak_ptr (ppt 第2版, DL 専用)
shared_ptr & weak_ptr (ppt 第2版, DL 専用)shared_ptr & weak_ptr (ppt 第2版, DL 専用)
shared_ptr & weak_ptr (ppt 第2版, DL 専用)Cryolite
 
shared_ptr & weak_ptr (ppt 初版, DL 専用)
shared_ptr & weak_ptr (ppt 初版, DL 専用)shared_ptr & weak_ptr (ppt 初版, DL 専用)
shared_ptr & weak_ptr (ppt 初版, DL 専用)Cryolite
 

Mais de Cryolite (8)

左と右の話
左と右の話左と右の話
左と右の話
 
Lambda in template_final
Lambda in template_finalLambda in template_final
Lambda in template_final
 
Allocators@C++11
Allocators@C++11Allocators@C++11
Allocators@C++11
 
家に帰るまでが遠足です
家に帰るまでが遠足です家に帰るまでが遠足です
家に帰るまでが遠足です
 
Destructive Call
Destructive CallDestructive Call
Destructive Call
 
Boost.PropertyMap (.pdf)
Boost.PropertyMap (.pdf)Boost.PropertyMap (.pdf)
Boost.PropertyMap (.pdf)
 
shared_ptr & weak_ptr (ppt 第2版, DL 専用)
shared_ptr & weak_ptr (ppt 第2版, DL 専用)shared_ptr & weak_ptr (ppt 第2版, DL 専用)
shared_ptr & weak_ptr (ppt 第2版, DL 専用)
 
shared_ptr & weak_ptr (ppt 初版, DL 専用)
shared_ptr & weak_ptr (ppt 初版, DL 専用)shared_ptr & weak_ptr (ppt 初版, DL 専用)
shared_ptr & weak_ptr (ppt 初版, DL 専用)
 

Último

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 

Último (9)

デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 

Boost.PropertyMap (.pptx)