使用空的Boost累加器

时间:2011-10-12 19:51:44

标签: c++ boost boost-accumulators

我很好奇,从这段代码片段获得了什么平均值?累加器是空的。

boost::accumulators::accumulator_set<
    int,
    boost::accumulators::features<boost::accumulators::tag::mean>
> Accumulator;

int Mean = boost::accumulators::mean(Accumulator);

我测试时平均值不为零。有什么方法可以告诉我,空数据集的平均值是多少?为什么“均值”的结果值不为零?

我正在查看累加器库的文档,但无法找到这个问题的答案。

2 个答案:

答案 0 :(得分:2)

任何值都是空值集的有效均值。对于任何x * 0 = 0x都适用。

您可以向count添加accumulator_set功能,然后查询该功能是否为0。

答案 1 :(得分:0)

您不需要添加 count 功能,因为平均值累加器基于 count sum 个累加器

来自boost User's Guide

平均值取决于求和累加器和计数累加器……均值累加器的结果仅仅是求和累加器的结果除以计数累加器的结果。

所以您只需要验证计数是否大于0:

bool isEmpty = boost::accumulators::count(Accumulator) == 0;