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库中累加器的用途是啥?的主要内容,如果未能解决你的问题,请参考以下文章
*.pyd 库中的 C++ Boost Python 方法不起作用