我正在寻找一种实现以下功能(伪代码)的列表类型:
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/