我最近发现了优秀的库 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 实现这一点?我不知道这是否可以用于库中所有类型的累加器(可能不适用于尾部),但它肯定可以用于重要的事情,如计数、总和、均值、矩、协方差等