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

标签 c++ arrays data-structures types

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

 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/

相关文章:

c++ - 霍尔分区不起作用?

java - 给定两个排序列表(或数组)和一个数字 k,创建一个算法来获取两个列表中最少的 k 个数字

java - 将二维数组传递给另一个类 : Java

Python:如果默认值设置为抛出异常的函数,Dict get 方法总是抛出异常

c++ - 英特尔 C++ 编译器 ICC 似乎忽略了 SSE/AVX 设置

c++ - 在对类型名 T 进行模板化时,T() 是什么意思?

javascript - 如何在 Angular 中向数组添加重复元素

perl - 如何在 Perl 中创建散列的散列?

c++ - 将 Struct 类型转换为 vect int

javascript - 在 JavaScript 中创建数组