12

最近、優れたライブラリブースト::アキュムレータを発見しました。これを使用して、統計を蓄積するコードの一部を置き換えたいと思います。

ドキュメントで見つけられないことの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を使用してこれをどのように達成できますか?これがライブラリ内のすべてのタイプのアキュムレータ(おそらくテール用ではない)に実装できるかどうかはわかりませんが、カウント、合計、平均、モーメント、共分散などの重要なものに実装できることは確かです。

4

2 に答える 2

3

残念ながら、この機能はBoost.Accumulatorsによって提供されていません。おそらく、結合は一部の統計に対してのみ機能するためです。

Boostトラッカーには、そのような機能を要求するチケットがあります。combine

于 2012-05-24T16:30:48.677 に答える
1

2つのaccumulator_set<>オブジェクトを追加するための適切で利用可能なoperator+=はありません。

于 2016-01-26T13:37:09.390 に答える