Подтвердить что ты не робот

Суммирование двух экземпляров boost:: accumulator_set

Недавно я открыл отличную библиотеку boost:: accumulators, и я хотел бы использовать ее для замены некоторого кода, который накапливает статистику.

Одна вещь, которую я не могу найти в документации, - это возможность суммировать два набора аккумуляторов, как в случае оператора + =

Пример:

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? Я не знаю, может ли это быть реализовано для всех типов аккумуляторов в библиотеке (возможно, не для хвоста), но это может быть важно для важных вещей, таких как подсчет, сумма, значение, момент, ковариация и т.д.

4b9b3361

Ответ 1

К сожалению, эта функция не предоставляется Boost.Accumulators, вероятно, потому, что объединение будет работать только для некоторых статистических данных.

Существует билет на трекер Boost, запрашивающий такую ​​функцию combine.

Ответ 2

Нет подходящего и доступного оператора + = для добавления двух объектов accumulator_set < > .