c++ boost库中累加器的用途是啥?

Posted

技术标签:

【中文标题】c++ boost库中累加器的用途是啥?【英文标题】:What is the use of accumulator in c++ boost library?c++ boost库中累加器的用途是什么? 【发布时间】:2018-12-24 13:15:16 【问题描述】:

我刚刚阅读了 c++ 中的 boost 库指南。累加器的部分我没看懂。

在指南中它说每个累加器都可以拥有自己的功能,例如 tag::min 或 tag::mean。如果您拥有这些功能,则可以使用 min 函数(宏)。

那么为什么我不能只在 STL 中使用向量并使用诸如 min_element(v.begin(), v.end()) 之类的算法呢?使用累加器有什么好处?

导游也写了这些话 “累加器复杂度 O(1) 提取器复杂度 O(1)"。 这意味着什么?它与时间复杂度有关吗?这就是累加器的优势吗?

【问题讨论】:

【参考方案1】:

如果使用向量,则必须存储每个值。这需要内存,但是对于累加器的任务,实际上不需要存储这些值——对于某些计算,您只需要在给定新值时更新少量状态。

您可以编写一个节省空间的算法来执行计算而无需所有存储空间,或者您可以使用为您完成这项工作的累加器。

此外,累加器库提供了一些标准库没有的统计工具。

而且,是的,O(1) 的意思是“恒定时间复杂度”,这告诉我们这种方法的另一个重要好处——它的性能不会随着数字的数量变大而变差。

Here's a more in-depth explanation.

【讨论】:

以上是关于c++ boost库中累加器的用途是啥?的主要内容,如果未能解决你的问题,请参考以下文章

boost 在c++中是啥用

*.pyd 库中的 C++ Boost Python 方法不起作用

模拟实现c++标准库和boost库中的智能指针

是啥导致了 boost C++ asio 中的 asio.misc.3 错误

哪种算法需要“访问者”(boost 库中的术语)?

boosting是啥意思?