Ruby数据结构-最大
我正在寻找具有以下特征的Ruby数据结构,希望不必使用自己的结构:Ruby数据结构-最大,ruby,data-structures,Ruby,Data Structures,我正在寻找具有以下特征的Ruby数据结构,希望不必使用自己的结构: 先进先出(即队列) 允许指定最大长度 当队列达到容量时,新项目被推入,最旧的项目被丢弃 我本以为可以完成这项工作,但它不符合标准3,因为它会在达到最大长度时阻止推送 有人知道在维护良好的图书馆里有这样一头野兽吗 谢谢。听起来您在寻找循环队列或环形缓冲区 已接近,但如果超出可用空间,仍将抛出 我发现了一些其他的实现作为示例代码,但到目前为止,还没有打包成gem。一个是。这可能是一个相当简单的实现,可能需要一些工作 似乎包含了一个相
谢谢。听起来您在寻找循环队列或环形缓冲区 已接近,但如果超出可用空间,仍将抛出 我发现了一些其他的实现作为示例代码,但到目前为止,还没有打包成gem。一个是。这可能是一个相当简单的实现,可能需要一些工作
似乎包含了一个相当完整的环形缓冲区实现。听起来像是在寻找循环队列或环形缓冲区 已接近,但如果超出可用空间,仍将抛出 我发现了一些其他的实现作为示例代码,但到目前为止,还没有打包成gem。一个是。这可能是一个相当简单的实现,可能需要一些工作
似乎包含了一个相当完整的RingBuffer实现。JasonTue答案中的最后两个链接现在不存在了,但我在这里发现了(可能是相同的)RingBuffer片段:JasonTue答案中的最后两个链接现在不存在了,但我在这里发现了(可能是相同的)RingBuffer片段:您可以试试这一个 像这样使用它:
ring = Ring.new(4)
ring.pos #=> 0
ring << :a # fills first element
ring.pos #=> 1
ring << :b << :c << :d # fills the rest
ring.to_a # [:a, :b, :c, :d] - Array of elements from the current position
ring.next #=> :a
ring.to_a # [:b, :c, :d, :e] - Position shifted
ring << :z #=> overwrites :b and advances position
ring.to_a #=> [:c, :d, :a, :z]
ring=ring.new(4)
ring.pos#=>0
环1
你可以试试这个
像这样使用它:
ring = Ring.new(4)
ring.pos #=> 0
ring << :a # fills first element
ring.pos #=> 1
ring << :b << :c << :d # fills the rest
ring.to_a # [:a, :b, :c, :d] - Array of elements from the current position
ring.next #=> :a
ring.to_a # [:b, :c, :d, :e] - Position shifted
ring << :z #=> overwrites :b and advances position
ring.to_a #=> [:c, :d, :a, :z]
ring=ring.new(4)
ring.pos#=>0
环1
打电话谢谢你给我两个新的搜索词:-)“循环数组”是我的同事很久以前使用的另一个词,特别是当目的(比如堆栈与队列)不明确时。谢谢你给我两个新的搜索词:-)“循环数组”是我的同事很久以前使用的另一个词,特别是如果目的(比如堆栈与队列)不够明确。