study3 boost

Post on 27-May-2015

1.113 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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++界のハイレベルな人たちも全国各地から札幌に集まります。

まとめ

それでは、本番始めていきましょう。

top related