C++ 如何设计固定时间长度的循环缓冲区?

C++ 如何设计固定时间长度的循环缓冲区?,c++,algorithm,C++,Algorithm,boost::circular_缓冲区不能提供固定长度的缓冲区,例如大小为5的缓冲区 成像,我有实时数据流进来的时间戳。我想在最后5分钟内保留所有Elemen的缓冲区 天真地说,我可以构建一个std::list的包装器,每次新的数据点D出现时,我将_向后推(D),然后执行while循环以弹出_front(),所有超过5分钟的数据点 这种设计的问题是,我必须为每个点构造一个新实例,这似乎是浪费时间(这是一个使用非常频繁的对象) 这里有人有更优雅的解决方案吗 谢谢 list或deque都适用于环形缓

boost::circular_缓冲区不能提供固定长度的缓冲区,例如大小为5的缓冲区

成像,我有实时数据流进来的时间戳。我想在最后5分钟内保留所有Elemen的缓冲区

天真地说,我可以构建一个std::list的包装器,每次新的数据点D出现时,我将_向后推(D),然后执行while循环以弹出_front(),所有超过5分钟的数据点

这种设计的问题是,我必须为每个点构造一个新实例,这似乎是浪费时间(这是一个使用非常频繁的对象)

这里有人有更优雅的解决方案吗


谢谢

list或deque都适用于环形缓冲区。如果您的对象很容易复制并且很小,那么您可以使用deque,而不必担心内存实例。如果您有较大的数据,则可以使用列表和自定义对象池(以便在将来添加时重用旧的未使用对象)


如果您不喜欢std集合对象池语义(在C++11之前很糟糕,我现在不确定),那么您可以简单地将指针存储在deque中并管理自己的内存。

对于循环缓冲区,它会有什么不同?您也需要构造数据点