std :: deque内存使用

Dan*_*anS 1 c++ memory stl deque

我已经实现了一个简单的统计引擎,使用deque返回滚动均值和方差,以提供数据队列.

deque由许多条目构成,这些条目等于滚动值的数量.

当新值到达时,最前面的值会弹出前面,而新值会被推到后面.

我需要确保这不会在内存中增长,因为它预计会在很长一段时间内作为后台任务运行.

deque是否在使用中的堆上分配?有没有可用于修复尺寸的标志?

我在RHEL 5.3上使用G ++ 4.1.2

Kon*_*lph 9

实质上,任何动态大小的容器都会从堆中分配内存.另一个问题概述了双端队列的实现.

但在您的特定情况下,队列始终具有相同的大小.如果遇到deque的问题,在固定大小的数组上使用循环缓冲区实现一个简单的固定大小队列可能是有益的.这种实现应该具有从根本上更好的内存行为(因为它永远不需要重新分配).如果没有分析数据,很难评估其优势是否值得实施的麻烦.

  • BTW:boost有一个循环缓冲区:http://www.boost.org/doc/libs/1_46_1/libs/circular_buffer/doc/circular_buffer.html (7认同)