Boost
Boost 1.36 からある boost::accumulators::accumulator_set は統計を取るクラス (参照:letsboost::accumulators)。参照先にあるような例題では要素数が少ないのでそのまま書き下せるが、要素数が増えてくるとループで回すことになる。例えば以下のように。…
いつのまにか、1.33.1-4 から最新版の 1.43 になってる…これでまたプログラミングと互換性の幅が広がる。
STL の std::bind1st や std::bind2nd は参照の参照問題を解決できないので、パフォーマンス的な問題が起こりうる。そこで、Boost の boost::bind。これは参照の参照問題を回避しているだけでなく std::ptr_fun などで関数オブジェクト化しなくても関数をそ…
http://d.hatena.ne.jp/kamekamekame877/20090627 での配列からのキャストを使った応用。 BOOST_STATIC_ASSERT(sizeof(int[10]) == sizeof(boost::array<int, 10>)); int a[10]; boost::array<int, 10> &b = *reinterpret_cast<boost::array<int, 10>*>(a);</boost::array<int,></int,></int,>
合成関数はSGI ライブラリにはあるが、標準C++ライブラリには無い。使いたい場合は STLport か Boost を用いる…ってBoost では compose は無くなって Bind で代用すんのか。使い方は大体一緒?
boost::multi_array_ref はメモリ上の連続データを multi_array として利用するためのインターフェイス。というわけで、これを使えば既存の std::vector や std::valarray のデータを boost::multi_array として使うこともできる。
やはり仕様が難しくて分かりにくい…しかし今の知識なら使えるぞ。イメージ的には、頓挫した標準ライブラリ valarray の slice, gslice で仕様化したかったことがきちんと実装されているという感じ。
The Boost Multidimensional Array Library (Boost.MultiArray) - 1.33.1 研究で多次元配列を多用するので、これまでは std::valarray をラッピングして使ってましたが、これからは Boost.MultiArray を使おうということで勉強中…。しかし、More on index_ra…