C++でBoostを使い始めました

最近、Cのオープンソースライブラリ「Boost」を使い始めました。C標準化委員会のメンバーが中心となって立ち上げたプロジェクトで、次期C標準ライブラリに採用される機能の“実験場”としても知られています。いわば、Cの未来を少し早く触れるためのライブラリです。

扱っている分野は非常に幅広く、アルゴリズム、文字列処理、数学、並列処理、スマートポインタ、ファイルシステムなど多岐にわたります。まだ全体を使いこなせてはいないものの、文字列処理や数学系の関数はすでに大活躍していて、導入後はプログラムの安定性や速度が向上しました。

Boostの導入は意外と簡単

Boostは以下のサイトからダウンロードできます。

アーカイブを適当なディレクトリに解凍し、インクルードディレクトリとライブラリディレクトリをコンパイラに設定すれば基本的には使い始められます。一部のライブラリ(regexfilesystem など)は事前ビルドが必要ですが、公式の b2 ツールでまとめてビルドできるので、それほど手間ではありません。

Boostと標準ライブラリの名前衝突問題

ひとつ困っているのが、行列演算用の boost::numeric::ublas::vector と、標準ライブラリの std::vector が名前で衝突してしまうこと。どちらも頻繁に使うので、毎回フルネームを書くのはさすがに煩雑です。

この問題は、usingtypedef で別名を付けるのが一般的な解決策です。

namespace ublas = boost::numeric::ublas;
using Vec = ublas::vector<double>;

こうしておくと、コードの可読性も上がり、名前衝突のストレスから解放されます。

コメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください