Mais conteúdo relacionado
Semelhante a Study3 boost (20)
Mais de Kohsuke Yuasa (7)
Study3 boost
- 2. 本日のレシピ
Boost とは?
Boost で C++ はどうなる?
今日から使えるライブラリの紹介
その他、今日役立つ Boost の紹介
まとめ
- 4. Boost とは?
正式名称 「 Boost C++ Libraries 」
C++ 標準化委員会のメンバが始めたオープ
ンソースプロジェクト
C++ の次期標準ライブラリのための実験場
としてスタート
〜プログラミングの魔導少女” Boost C++ Libraries より〜
- 5. Boost とは?
正式名称 「 Boost C++ Libraries 」
C++ 標準化委員会のメンバが始めたオープ
ンソースプロジェクト
C++ の次期標準ライブラリのための実験場
としてスタート
ライブラリのためのライブラリみたいなものが多い。
〜プログラミングの魔導少女” Boost C++ Libraries より〜
- 6. Boost とは?
正規表現・テキスト処理など
コンテナ
関数オブジェクトや高階関数
テンプレートメタプログラミングや Generi
c プログラミング
数学(行列、乱数、数学関数など)
Input/Ouput
その他色々。
- 7. Boost とは?
正規表現・テキスト処理など
コンテナ
関数オブジェクトや高階関数
テンプレートメタプログラミングや Generi
c プログラミング
数学(行列、乱数、数学関数など)
Input/Ouput
その他色々。 非常に幅広い。
- 8. Boost とは?
それぞれのライブラリは Boost に提案して
から、厳正なレビューを経て、認められた
ものだけが Boost 入りを果たす。
(レビューの対象になる項目はアキラ先生
の記事参照のこと。ソースだけじゃなく
て、テストコードやドキュメントも。)
なので、 Boost に入っているライブラリは
非常に質が高い。
- 9. Boost とは?
公式サイト
http://www.boost.org/
日本語情報
https://sites.google.com/site/boostjp/ “Boostjp”
http://www.kmonos.net/alang/boost/ “Lets' Boost”
- 12. Boost で C++ はどうなる?
旧来の C++
生ポインタ
生配列
貧弱な文字列処理
STL は不完全
C++ の魔力が足りてない状態
- 13. Boost で C++ はどうなる?
旧来の C++ → 加速した C++
生ポインタ → SharedPtr,...
生配列 → Array
貧弱な文字列処理 → StringAlgo, Regex,...
STL は不完全 → Lambda, Range,...
C++ が魔力付与された状態
- 16. Boost で C++ はどうなる?
デメリットも・・・
コンパイル時間が伸びる!
どれくらい伸びるかは、ライブラリによりけりです。
ほとんど影響がないものもあります。
Boost.Spiritおすすめ!
- 20. 今日から使えるライブラリの紹介
Boost.ForEach
std::vector<int> vs;
BOOST_FOREACH(const v, vs) {
std::cout << v << std::endl;
}
BOOST_REVERSE_FOREACH(const v, vs) {
std::cout << v << std::endl;
}
- 21. 今日から使えるライブラリの紹介
Boost.ForEach
コンテナを走査
コンテナだけじゃなく配列もおk。
取得する要素を const 変数に出来る
break や continue にも対応
- 24. 今日から使えるライブラリの紹介
Boost.SmartPtr
スマートポインタ
← モダンな C++ の代表格
shared_ptr
scoped_ptr
intrusive_ptr
(unique_ptr)
- 25. 今日から使えるライブラリの紹介
Boost.SmartPtr
{
SomeClass *p = new SomeClass();
try {
foo(p);
delete p;
p = 0;
} catch(...) {
delete p;
p = 0;
}
}
- 26. 今日から使えるライブラリの紹介
Boost.SmartPtr
{
boost::shared_ptr<SomeClass> p(
new SomeClass());
foo(p.get());
}
- 28. 今日から使えるライブラリの紹介
Boost.Thread
Windows のスレッドや PThread をラップ
C++ から使いやすいインタフェースに
同期機構には Boost.Mutex を使う
※ ビルドが必要
- 29. 今日から使えるライブラリの紹介
Boost.Thread
//void worker(int n) { /* ... */ }
{
boost::thread th(worker, 10);
th.join();
}
- 32. 今日から使えるライブラリの紹介
Boost.Function
汎用関数オブジェクト
関数ポインタとメンバ関数ポインタを統一
的に扱える
そのまま std::for_each() に渡したり出来る
- 33. 今日から使えるライブラリの紹介
Boost.Function
struct mul {
mul(int m) : m_(m) {}
int operator()(int n) const {
return n * m_;
}
int m_;
};
boost::function<int(int)> func(mul(3));
//call
std::cout << func(2) << std::endl; //6
- 36. 今日から使えるライブラリの紹介
Boost.Assign
using namespace boost::assign;
std::vector<int> vs;
vs += 1, 2, 3, 5, 8, 13;
std::list<int> ls = list_of(1)(4)(9)(16);
std::cout << vs[3] << std::endl; //5
std::cout << ls.back() << std::endl; //16
- 39. 今日から使えるライブラリの紹介
Boost.Regex
boost::regex r("魔法少女");
std::string text = "僕と契約して魔法少女になって
よ!";
std::string to = "C++er";
std::cout
<< boost::regex_replace(
text, r, to, boost::format_all )
<< std::endl;
- 41. その他、今日役立つ Boost
LexicalCast : 文字列 <-> 数値の変換など
Format : printf-like 書式変換
Graph : STL 状のグラフライブラリ
Property Tree : Config 等向きデータ構造
Math : 数学ライブラリ
Spirit.Qi : PEG パーサー DESL
String Algo : 文字列処理
MultiArray : 多次元配列
- 43. まとめ
全然紹介しきれないです。
Boost は C++ を加速させます。
もっと Boost についてちゃんと知りたい方
は”プログラミングの魔導少女”の高橋 晶さ
んの記事をご覧になってください。
http://sites.google.com/site/sapporocpp/linguamagi/
- 44. まとめ
来月 11/05 に Boost. 勉強会 #6 札幌を開催
します!
先に名前の登場している高橋 晶さんをはじ
め、 C++ 界のハイレベルな人たちも全国各
地から札幌に集まります。
- 45. まとめ
それでは、本番始めていきましょう。