我正在寻找一种实现以下功能(伪代码)的列表类型:

 list.init(5, 2, 6, 9);
 list.add(1) // 2, 6, 9, 1
 list.add(4) // 6, 9, 1, 4
 list.add(8) // 9, 1, 4, 8

将新元素添加到固定大小列表,然后弹出最旧的元素。
抱歉,我不知道这个概念的名字,所以我问你,名字可能是什么。 ;)

我在C++中的实现实际上是这样的:
std::deque<double> values(4);

void add(double value)
{
    values.pop_front();
    values.push_back(value);
}

有没有比我的更好的实现,也许一直都是固定大小的?

最佳答案

Boost's circular_buffer是您想要的。

用法示例:

   boost::circular_buffer<int> buffer(3);
   buffer.push_back(1);
   buffer.push_back(2);
   buffer.push_back(3);
   // now buffer is 1, 2, 3
   buffer.push_back(4);
   // now buffer is 2, 3, 4

Live example

关于c++ - 我应该使用哪个阵列/列表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25421313/

10-15 04:35