Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,022
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
4
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. C++ を加速させる Boost hotwatermorning
  • 2. 本日のレシピ Boost とは? Boost で C++ はどうなる? 今日から使えるライブラリの紹介 その他、今日役立つ Boost の紹介 まとめ
  • 3. 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”
  • 10. Boost で C++ はどうなる?
  • 11. Boost で C++ はどうなる? 旧来の C++
  • 12. Boost で C++ はどうなる? 旧来の C++ 生ポインタ 生配列 貧弱な文字列処理 STL は不完全 C++ の魔力が足りてない状態
  • 13. Boost で C++ はどうなる? 旧来の C++ → 加速した C++ 生ポインタ    → SharedPtr,... 生配列      → Array 貧弱な文字列処理 → StringAlgo, Regex,... STL は不完全 → Lambda, Range,... C++ が魔力付与された状態
  • 14. Boost で C++ はどうなる? デメリットも・・・
  • 15. Boost で C++ はどうなる? デメリットも・・・ コンパイル時間が伸びる!
  • 16. Boost で C++ はどうなる? デメリットも・・・ コンパイル時間が伸びる! どれくらい伸びるかは、ライブラリによりけりです。 ほとんど影響がないものもあります。 Boost.Spiritおすすめ!
  • 17. 今日から使えるライブラリの紹介
  • 18. 今日から使えるライブラリの紹介 (※主観)
  • 19. 今日から使えるライブラリの紹介 Boost.ForEach
  • 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. 今日から使えるライブラリの紹介 Boost.ForEach コンテナを走査 コンテナだけじゃなく配列もおk。 取得する要素を const 変数に出来る break や continue にも対応
  • 22. 今日から使えるライブラリの紹介 Boost.SmartPtr
  • 23. 今日から使えるライブラリの紹介 Boost.SmartPtr スマートポインタ ← モダンな C++ の代表格
  • 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());}
  • 27. 今日から使えるライブラリの紹介 Boost.Thread
  • 28. 今日から使えるライブラリの紹介 Boost.Thread Windows のスレッドや PThread をラップ C++ から使いやすいインタフェースに 同期機構には Boost.Mutex を使う ※ ビルドが必要
  • 29. 今日から使えるライブラリの紹介 Boost.Thread//void worker(int n) { /* ... */ }{ boost::thread th(worker, 10); th.join();}
  • 30. 今日から使えるライブラリの紹介 Boost.Function
  • 31. 今日から使えるライブラリの紹介 Boost.Function 汎用関数オブジェクト
  • 32. 今日から使えるライブラリの紹介 Boost.Function 汎用関数オブジェクト 関数ポインタとメンバ関数ポインタを統一 的に扱える そのまま std::for_each() に渡したり出来る
  • 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. 今日から使えるライブラリの紹介 Boost.Assign
  • 35. 今日から使えるライブラリの紹介 Boost.Assign コンテナを簡単に初期化
  • 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. 今日から使えるライブラリの紹介 Boost.Regex
  • 38. 今日から使えるライブラリの紹介 Boost.Regex 正規表現ライブラリ ビルドが必要
  • 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. その他、今日役立つ Boost の紹介
  • 41. その他、今日役立つ Boost LexicalCast : 文字列 <-> 数値の変換など Format : printf-like 書式変換 Graph : STL 状のグラフライブラリ Property Tree : Config 等向きデータ構造 Math : 数学ライブラリ Spirit.Qi : PEG パーサー DESL String Algo : 文字列処理 MultiArray : 多次元配列
  • 42. まとめ
  • 43. まとめ 全然紹介しきれないです。 Boost は C++ を加速させます。 もっと Boost についてちゃんと知りたい方 は”プログラミングの魔導少女”の高橋 晶さ んの記事をご覧になってください。 http://sites.google.com/site/sapporocpp/linguamagi/
  • 44. まとめ 来月 11/05 に Boost. 勉強会 #6 札幌を開催 します! 先に名前の登場している高橋 晶さんをはじ め、 C++ 界のハイレベルな人たちも全国各 地から札幌に集まります。
  • 45. まとめ それでは、本番始めていきましょう。