添加新项时,哪个数据结构将丢弃最旧的项

What data structure discards the oldest item when a new one is added?

本文关键字:新项时 数据结构 添加      更新时间:2023-10-16

我一直在努力记住这一点,这让我抓狂。

基本上,它就像一个小数组,比方说大小为五,当你添加项目时,它开始填满。当它已满,并且您添加了一个新项目时,最旧的项目(第一个添加的)将被删除。

您可以通过变量[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缓冲区。非常常见。