BoostのサブライブラリであるuBlasでは行列やベクトルのような線形代数の計算を高速かつ見通しよく実施することができます。
実際のところ
導入
Ubuntuでの導入なら、apt-get経由でlibboost-devを使ったほうが楽です。
私のように、単に試したいという動機ならビルドしようとしたりすると無闇に時間がかかります(
$ sudo apt-get install libboost-dev
サンプル
公式のサンプルでは、こんな感じの例が提示されています。
#include <iostream> #include <boost/numeric/ublas/vector.hpp> #include <boost/numeric/ublas/io.hpp> namespace ublas = boost::numeric::ublas; int main() { // double型を要素とする3次元ベクトル ublas::vector<double> v(3); // 各要素の参照と代入 v[0] = 3.0; // x v[1] = 0.0; // y v[2] = 4.0; // z // 出力ストリーム std::cout << v << std::endl; }
[3](3,0,4)
行列の場合は以下のような感じで
#include <boost/numeric/ublas/matrix.hpp> //... ublas::matrix<double> matA(3,3); //... //初期化 for(int i = 0; i < 3; i++){ for(int j = 0; j < 3; j++){ matA(i,j) = i+j; } }