添加新项时,哪个数据结构将丢弃最旧的项
What data structure discards the oldest item when a new one is added?
我一直在努力记住这一点,这让我抓狂。
基本上,它就像一个小数组,比方说大小为五,当你添加项目时,它开始填满。当它已满,并且您添加了一个新项目时,最旧的项目(第一个添加的)将被删除。
您可以通过变量[0]、变量[1]等访问这些值,其中变量[0]是最旧的值,变量4是最新的值。
有什么想法吗?它是一个标准的C++类型,还是我只是在某个地方把它看作一个自定义类?
Boost Circular Buffer
http://www.boost.org/doc/libs/1_46_1/libs/circular_buffer/doc/circular_buffer.html
来自Boost文档:
// Create a circular buffer with a capacity for 3 integers.
boost::circular_buffer<int> cb(3);
// Insert some elements into the buffer.
cb.push_back(1);
cb.push_back(2);
cb.push_back(3);
int a = cb[0]; // a == 1
int b = cb[1]; // b == 2
int c = cb[2]; // c == 3
// The buffer is full now, pushing subsequent
// elements will overwrite the front-most elements.
cb.push_back(4); // Overwrite 1 with 4.
cb.push_back(5); // Overwrite 2 with 5.
// The buffer now contains 3, 4 and 5.
a = cb[0]; // a == 3
b = cb[1]; // b == 4
c = cb[2]; // c == 5
使用queue
可以很容易地实现这一点,尽管它没有达到您在这里描述的最大项数。
它被称为FIFO缓冲区。非常常见。
相关文章:
- C++:添加新结构时,结构指针向量中的所有元素都会更新
- 一种有效的数据结构,用于按 ID 访问和查找加权随机项
- 类方法 - 数据结构中 For 循环的运行时错误
- 从输入中删除重复项,而不使用任何数据结构
- LLVM:在运行时更新数据结构
- 当接收到不明确的规范时,表示图的邻接列表的数据结构
- 当我尝试为结构分配新指针时出现堆栈溢出错误
- 与shared_ptr相比,更小的运行时数据结构和更快的代码可实现独特的_ptr
- 插入特定的数据结构时,我在做错什么
- 如何在构造时声明类对数据结构的哪个成员进行操作
- cpp 中是否存在一种数据结构,可以轻松地提供一种基于已存在的实例构建新结构的方法
- 当并行线程访问同一数据结构的其他成员时,正确的方法可以在Visual Studio上的OpenMP上并行循环
- 使用提升库在队列和堆栈数据结构上保存和加载数据时出错
- 在创建C 枚举和依赖数据结构时,如何避免重复自己
- 当我想为结构体声明新成员时,有些麻烦我不明白
- 尝试将顶点添加到自定义Graph数据结构时出现分段错误
- 如何在MPI中从结构类型创建新的派生数据类型
- 处理动态数据结构时代码中的神秘错误
- 为什么添加新项时list.end()不改变?
- 添加新项时,哪个数据结构将丢弃最旧的项