boost

今日は久しぶりに一日なんもない日。とゆーわけで夏休みの基本ダラダラを満喫。うーん、やっぱ夏休みはこれに限る。今日何をしたと言われても、何もしてない。あ、甲子園見た。京都外大西後半から見てたけどすごいおもろかった。やっぱ実力だけじゃなくて運も必要よね勝ち続けるためには。残念ながら明日の決勝はバイトで見れないorz

あとboost本読み終わり。おもしろそうなとこだけ流し読みやけど。

Boost C++ Library プログラミング

Boost C++ Library プログラミング

boost関連ページを勝手に作ろうかと思ってたけど、読書もしたいし、テイルズ進んでないし、バイトもせねばならんし、論文読まなあかんし、9月なったらソフ開も手をつけねばならんしで、いろいろやることだらけで無理っぽいからここでちょっち簡単にまとめて書いておこう。

boostとはC++の標準ライブラリであるSTLをさらに拡張したライブラリで、今のところ言語標準ではないけど、オープンソースなコミュニティベースで開発を続けることで実質的な標準にしようとゆー企み。最終目標は次期標準ライブラリへの採用とゆー野望。boostはC++標準仕様に従って実装されてるけど、最新のテンプレート技術を多用するんで古いコンパイラだとコンパイルできないライブラリが多数あるので注意が必要。ライブラリの本体やドキュメント、コンパイラの対応状況なんかはboost.orgにあり。
boostは現在では50以上のサブライブラリから構成されてるけど、とりあえずすぐ使い道がありそうなんが、

  • random:乱数
  • serialization:シリアライズ
    • オブジェクトの状態をファイルに保存し、次回起動時にそれを読み込むことでオブジェクトの状態を復元するシリアライズ操作を行う。
  • array:静的配列のラッパ
    • 組み込み配列をアルゴリズムに渡すためのラッパ。サイズが固定ならvectorよりも効率的。
  • tuple:複数データをまとめて扱う
    • 複数のデータを関数値として返したいけど、わざわざ構造体を定義するほどでもないときに複数データを1つにまとめる。簡単に言うとstd::pairを2以上に拡張したもの。
  • tokenizer:文字列処理
    • トークンの切り出し。csvとかを処理するのに使う。
  • filesystem:ファイル操作
  • date_time:時間もの
    • 日付や時間データの演算、カレンダー。
  • timer:簡易タイマー
    • ちょっち時間が測りたいときにms程度の精度の簡易タイマー。
  • shared_ptr:スマートポインタ
    • delete不要でメモリ管理を自動化してくれるポインタ。参照カウントを実装しているのでポインタを自由にコピーして使っても複数回deleteされることはなく安全性が保証される。new/delete以外にも明示的にCreate/Destroy系のAPIを登録すればそれを使ってくれるのでOS依存のAPIにも使用可。
  • bind:STLのバインダの拡張
    • 9引数まで自由にバインド可能

使い方覚えたら強力っぽいの

  • regex:正規表現
  • lambda:無名の関数オブジェクト
    • アルゴリズムに渡す関数オブジェクトをその場で定義できるよーになる。ものすごく便利っぽいけどこれって効率的にどうなんだろうとゆーのが不安なんやけど、暇があればリファレンス読もう。
  • sprit:BNF風記法の字句解析
  • graph:グラフ
    • Excelとかのグラフじゃなくて、グラフ論の方のグラフ。てゆーかネットワークの研究してるともろに使いそう。
  • test:単体テスト
    • CUnitみたいなの。関数やクラスの要求仕様を定義してテストを自動化。テストは全然かじったことがないんでそのうち覚えたいとは思うんやけど。

その他いろいろはboost.orgを参照で。