最近、優れたライブラリブースト::アキュムレータを発見しました。これを使用して、統計を蓄積するコードの一部を置き換えたいと思います。
ドキュメントで見つけられないことの1つは、operator + =のように、2つのアキュムレータセットを合計する機能です。
例:
using namespace boost::accumulators;
typedef accumulator_set<double, features<tag::variance> > AccumSet;
class Foo {
AccumSet acc;
public:
Foo& operator+=(const Foo& that) {
this->acc += that.acc; // error! no such operator
return *this;
}
double GetVariance() { return variance(acc); }
};
利用可能なAPIを使用してこれをどのように達成できますか?これがライブラリ内のすべてのタイプのアキュムレータ(おそらくテール用ではない)に実装できるかどうかはわかりませんが、カウント、合計、平均、モーメント、共分散などの重要なものに実装できることは確かです。