Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何序列化boost::累加器::累加器集<>;?_C++_Boost - Fatal编程技术网

C++ 如何序列化boost::累加器::累加器集<>;?

C++ 如何序列化boost::累加器::累加器集<>;?,c++,boost,C++,Boost,如今,每个人都关心保护用户隐私和他们的数据。能够对数据进行统计分析,而实际上不必将数据样本保存得太久,这是朝着正确方向迈出的坚实一步 boost库中的累加器概念看起来非常适合实现这一目标 累加器框架是执行增量存储的框架 计算。框架的使用遵循以下模式: 用户一次一个样本地将数据推入累加器\u集合对象 时间 累加器\u集合计算所需的存储量 可能的最有效方法,解决 请求的计算,可能缓存中间结果 只有一个大问题。我不知道如何序列化累加器实例,这样我就可以持久化它,而不需要在应用程序启动之间保留样本数据

如今,每个人都关心保护用户隐私和他们的数据。能够对数据进行统计分析,而实际上不必将数据样本保存得太久,这是朝着正确方向迈出的坚实一步

boost库中的累加器概念看起来非常适合实现这一目标

累加器框架是执行增量存储的框架 计算。框架的使用遵循以下模式:

用户一次一个样本地将数据推入
累加器\u集合
对象 时间

累加器\u集合
计算所需的存储量 可能的最有效方法,解决 请求的计算,可能缓存中间结果

只有一个大问题。我不知道如何序列化累加器实例,这样我就可以持久化它,而不需要在应用程序启动之间保留样本数据


如何创建实例并恢复应用新样本所需的所有必要参数,以及如何继续增量计算?我不想从头开始,也不想保留以前的样本。

我认为您误解了累加器组内部的工作原理

它没有保存样品。事实上,如果您只是参数化了“min”和“max”状态的集合,那么唯一要保留的状态就是结果类型的2个值

其他一些统计数据保持更多状态(例如直方图、百分位数等)

由于
acculator\u set
首先支持序列化,因此在样本保留方面应该可以

我还没查过


更新

好的。我已经看了大约一个小时了,没有理由认为序列化是受支持的或易于实现的

我所看到的最多的是功能是可复制的

但是没有可以从外部调整的分配器,因此也不能利用内存映射文件

这使我得出结论,您想要的是而不是库的功能。因此,在文档介绍中:

累加器既是增量统计计算的库,也是增量计算的可扩展框架

显然,我们应该将其理解为“累加器组生命周期内的增量操作”,而不是“可恢复/持久”中的“增量”


这似乎是一个很好的特性请求,库作者希望能够提供帮助?

是的,它没有保留样本,这很好。这就是我想使用它的原因——它可以基于缓存了必要中间结果的先前样本执行增量计算。但是,在构建累加器的新实例时,如何恢复这些中间结果呢?我认为他根本不想保留样本,只想保留“继续”所需的内部状态。换句话说,他实际上问的是关于你脚注的细节。@Nir补充了一些想法;我们可以联系Eric Niebler征求专家意见:)@Eric Niebler好心的请求在这里发表评论(以确保我不是在胡说“你的”图书馆)。Cheers@Sehe我真的很感谢你抽出时间来做这件事。从你的更新和Nir所说的来看,我们在这个问题上完全站在同一个角度。