Top | Wiki | Blog | Github  

Boost

Boost は,C++ 用のライブラリです.C++ 用のライブラリとしてはSTLが有名ですが,Boost は,C++ の言語として標準化が一度完了した後に登場したライブラリで,STL では不足しているといわれる機能を実装しています.個人的にはまだSTLのすべてを使いこなしているわけではないですが,Boost ならではの魅力的な部分は積極的に使っていこう!ということで,勉強を始めました.

以下,勉強過程で必要と感じたメモです.

インストール

Boost は,現在 Sourceforge で管理されています.一部のライブラリを使用するために,コンパイル作業が必要になります.まずは,必要なパッケージを入手します.2006.9.10 現在のバージョンは,1.33.1 です.

Boost C++ Libraries

必要なのは,Boost 本体と Boost-jam という make の代わりになるものです.Boost-jam は,RPM でも提供されているので,すぐにインストールできます.

1: rpm -ivh boost-jam-3.1.13-1.i386.rpm

続いて,ビルドとインストールを行います.

1: bjam -sTOOLS=gcc --prefix=/usr/local install

-sTOOLS には,コンパイラを指定します.インテルコンパイラならば,intel-linux とします.このインストール作業により,ヘッダファイルが,

/usr/local/include/boost-1_31

に.ライブラリファイルが,

/usr/local/lib

に格納されるので,それらにコンパイラのパスを通せばよい.ヘッダファイルについては,いちいち名前を指定し直すのも面倒なので,

1: cd /usr/local/include
2: ln -s boost-X_XX_X/boost

としておけばよい.

apt-get できる場合には,

1: apt-get install boost
2: apt-get instlal boost-devel

で簡単にインストールできる.

とりあえず使ってみたいライブラリ

  1. スマートポインタ
  2. 乱数
  3. interval (精度補償)
  4. バイナリデータの扱い (dynamic_bitset)
  5. tuple (関数の戻り値を簡単に2つ以上にする)
  6. optional
  7. timer (std::clock を使った一連の作業を効率化)
  8. noncopyalbe (オブジェクトの実体のコピーを明示的に禁止する)

timer

たとえばこんな感じで使えます.

#include <iostream>
#include <boost/timer.hpp>
 
using namespace std;
using namespace boost;
 
int main(){
 
  timer t; // クロック動作開始
  for(int i=0; i<100000; i++){
    cout << "timer" << endl;
  }
  cout << t.elapsed() << " [sec]" << endl;
  return 1;
}

リンク