【问题标题】:What data type would have a structure with a maximum size and elements are FIFO?哪种数据类型的结构具有最大大小并且元素是 FIFO?
【发布时间】:2019-12-18 18:12:32
【问题描述】:

我想存储一些值,但一次只能存储三个。如果要存储第四个,则将删除结构中最旧的值以腾出空间。

例如:

const unsigned int BUFFER = 3; // maximum size
SomeType s(BUFFER);
s.add(1); // s is now 1 --> NULL --> NULL
s.add(3); // s is now 3 --> 1 --> NULL
s.add(6); // s is now 6 --> 3 --> 1
s.add(4); // s is now 4 --> 6 --> 3 (1 was removed)

C++03 中是否有内置数据结构,还是需要我自己制作?

【问题讨论】:

  • boost::circular_buffer?标准库中没有类似的东西。
  • 一个循环缓冲区?但它不在标准库中。
  • 你想要一个循环队列,我相信。 Afaik,这不是 STL 的一部分,但实现起来相对简单。

标签: c++ arrays data-structures queue c++03


【解决方案1】:

至于 C++ 的内置结构,您可以使用 std::queue,但您需要自己检查大小,因为没有内置方法将其限制为 3。

如果您只是在将项目推入 FIFO 队列时检查队列的大小,这将非常简单。如果队列已经在size==3,则调用pop 函数来删除列表顶部的元素,然后push 将新元素放入队列中。

【讨论】:

  • 这个。如果要多次使用,我强烈建议创建他自己的队列类。
【解决方案2】:

C++03 中是否有内置数据结构

适合您描述的数据结构是循环缓冲区。

标准库中没有这样的容器。

还是需要我自己做?

您可以自己制作。循环缓冲区可以在序列容器之上实现。或者 - 一如既往 - 您可以使用预先存在的库。

【讨论】:

    猜你喜欢
    • 2013-01-18
    • 1970-01-01
    • 1970-01-01
    • 2019-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 2015-11-26
    相关资源
    最近更新 更多