2012-04-24 52 views
1

我正在寻找具有以下特征的一个Ruby数据结构,我希望能没有推出自己的:红宝石数据结构 - 队列与最大

  1. 先入先出(即队列)
  2. 允许指定最大长度
  3. 当队列达到容量时,推入新项目并丢弃最旧的项目。

我认为SizedQueue可能已经完成了这项工作,但它不符合标准#3,因为它在达到最大长度时阻止推送。

任何人都知道这样的野兽在一个维护良好的图书馆?

谢谢。

回答

2

这听起来像你正在寻找一个循环队列或环形缓冲区。

cbuffer已接近,但如果超过可用空间仍然会抛出。

我发现了一些其他的实现作为示例代码,但是到目前为止,还没有发现作为gem打包的其他实现。一个是this RingBuffer snippet。这可能是一个相当简约的实现,可能需要一些工作。

This location似乎包含一个相当完整的RingBuffer实现。

+0

谢谢你给我两个新的搜索字词:-) – 2012-04-24 02:42:20

+0

A“圆阵”是另一个当我的同事使用这个术语的时候,特别是如果目的(比如堆栈vs队列)小于特定的时间。 – JasonTrue 2012-04-24 03:30:03