Study3 boost

1,591 views

Published on

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,591
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
6
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Study3 boost

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

×