我正在寻找具有以下特征的一个Ruby数据结构,我希望能没有推出自己的:红宝石数据结构 - 队列与最大
- 先入先出(即队列)
- 允许指定最大长度
- 当队列达到容量时,推入新项目并丢弃最旧的项目。
我认为SizedQueue可能已经完成了这项工作,但它不符合标准#3,因为它在达到最大长度时阻止推送。
任何人都知道这样的野兽在一个维护良好的图书馆?
谢谢。
我正在寻找具有以下特征的一个Ruby数据结构,我希望能没有推出自己的:红宝石数据结构 - 队列与最大
我认为SizedQueue可能已经完成了这项工作,但它不符合标准#3,因为它在达到最大长度时阻止推送。
任何人都知道这样的野兽在一个维护良好的图书馆?
谢谢。
这听起来像你正在寻找一个循环队列或环形缓冲区。
cbuffer已接近,但如果超过可用空间仍然会抛出。
我发现了一些其他的实现作为示例代码,但是到目前为止,还没有发现作为gem打包的其他实现。一个是this RingBuffer snippet。这可能是一个相当简约的实现,可能需要一些工作。
This location似乎包含一个相当完整的RingBuffer实现。
在JasonTrue的回答的最后两个链接现在已经死了,但我发现(可能是相同的)RingBuffer片段在这里:https://gist.github.com/eerohele/1904422
谢谢你给我两个新的搜索字词:-) – 2012-04-24 02:42:20
A“圆阵”是另一个当我的同事使用这个术语的时候,特别是如果目的(比如堆栈vs队列)小于特定的时间。 – JasonTrue 2012-04-24 03:30:03