我刚刚阅读了c ++中Boost库的指南。而且我不了解累加器的一部分。
在指南中,它说每个累加器都可以拥有其功能,例如tag :: min或tag :: mean。如果您拥有这些功能,则可以使用min函数(宏)。
那为什么我不能只在STL中使用向量并使用min_element(v.begin(),v.end())之类的算法?使用累加器有什么好处?
导游也写了几句话 “累加器复杂度O(1) 提取器复杂度O(1)”。 这意味着什么?它与时间复杂度有关吗?这是蓄能器的优势吗?
答案 0 :(得分:5)
如果使用向量,则必须存储每个值。这会占用内存,但是对于累加器要执行的任务,实际上并不需要存储这些值-对于某些计算,只需要在给出新值时更新少量状态即可。
您可以编写一种节省空间的算法来执行计算而无需存储所有内容,或者可以使用为您完成工作的累加器。
此外,累加器库提供了一些标准库所没有的统计工具。
是的, O(1)的意思是“恒定的时间复杂度”,这告诉我们此方法的另一个重要好处-随着数量的增加,其性能不会变差。 / p>