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