12

我最近发现了优秀的库 boost::accumulators,我想用它来替换我的一些积累统计数据的代码。

我在文档中找不到的一件事是能够对两个累加器集求和,如 operator+=

例子:

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

没有合适且可用的 operator+= 用于添加两个 accumulator_set<> 对象。

于 2016-01-26T13:37:09.390 回答