boost:accumulators

1059 篇文章 286 订阅

使用 boost::accumulators::tag::count 计数

#include <boost/accumulators/accumulators.hpp>
#include <boost/accumulators/statistics.hpp>
#include <iostream>
using namespace boost::accumulators;
int main()
{
    accumulator_set<int, features<tag::count>> acc;
    acc(0);
    acc(0);
    acc(0);
    acc(0);
    acc(0);
    acc(0);
    std::cout << count(acc) << '\n'; // 由于传递了三个值,此示例将 3 写入标准输出
}
  • 由于传递了6个值,此示例将输出6

说明:

  • boost::accumulators::tag::count,这是一个简单的累加器,用于计算传递给它的值的数量。
  • 类 boost::accumulators::accumulator_set,这是一个模板
    • 它期望将要处理的值的类型作为其第一个参数。示例 将 int 作为第一个参数传递。
    • 第二个参数指定要使用的累加器。您可以使用多个累加器。类名 boost::accumulators::accumulator_set 表示可以管理任意数量的累加器。
      • 示例 使用 boost::accumulators::tag::count 选择一个计算值的累加器。
      • 严格来说,您指定的是特征,而不是累加器。特征定义了应该计算什么。
        • 请注意,您不能将特征直接传递给 boost::accumulators::accumulator_set。您需要使用 boost::accumulators::features。
    • 对于每个特征,都有一个同名的提取器。提取器接收累加器的当前结果。
      • 示例 使用提取器 boost::accumulators::count()。传递的唯一参数是 acc。 boost::accumulators::count() 返回 6。

使用均值和方差

#include <boost/accumulators/accumulators.hpp>
#include <boost/accumulators/statistics.hpp>
#include <iostream>
using namespace boost::accumulators;
int main()
{
  accumulator_set<double, features<tag::mean, tag::variance>> acc;
  acc(8);
  acc(9);
  acc(10);
  acc(11);
  acc(12);
  std::cout << mean(acc) << '\n';
  std::cout << variance(acc) << '\n';
}
  • 输出: 10, 2

说明:

  • 使用两个特征 boost::accumulators::tag::mean 和 boost::accumulators::tag::variance 来计算五个值的均值和方差。
  • 方差为 2,因为 Boost.Accumulators 为五个值中的每一个分配了 0.2 的权重。使用 boost::accumulators::tag::variance 选择的累加器使用权重。如果未明确设置权重,则所有值都具有相同的权重。

计算加权方差

#include <boost/accumulators/accumulators.hpp>
#include <boost/accumulators/statistics.hpp>
#include <iostream>
using namespace boost::accumulators;
int main()
{
  accumulator_set<double, features<tag::mean, tag::variance>, int> acc;
  acc(8, weight = 1);
  acc(9, weight = 1);
  acc(10, weight = 4);
  acc(11, weight = 1);
  acc(12, weight = 1);
  std::cout << mean(acc) << '\n';
  std::cout << variance(acc) << '\n';
}

说明:

  • 上面 将 int 作为第三个模板参数传递给 boost::accumulators::accumulator_set。此参数指定权重的数据类型。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值