c++ 我应该使用哪个数组/列表?

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

 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

翻译自:https://stackoverflow.com/questions/25421313/which-array-list-should-i-use

转载注明原文:c++ 我应该使用哪个数组/列表?