我需要一个在 Ruby 中保持元素排序并允许添加或删除元素的数据结构,并且至少能弹出列表中的第一个元素。
在 Ruby 文档中最接近的可能是 SortedSet。但是,这似乎没有提供通过索引访问元素的任何方法(甚至无法弹出列表中的第一个元素)。
这些是我需要的具体操作:
- 向列表中添加对象
- 从列表中弹出第一个对象
- 检查对象是否在列表中
- 从列表中删除对象(按对象而不是按索引)
Ruby 中是否有任何内置功能可实现此操作,或者是否可以获取任何库来实现此操作?如果可能,我宁愿使用现有的代码库而不是自己编写一个。
目前我正在使用 Ruby 1.8,尽管切换到1.9可能也可以。
编辑:
由于似乎存在一些困惑,我需要的排序不是插入对象的顺序。我需要根据 <=>
操作符对排序进行排序。通常,我将弹出第一个元素,然后处理它(可能会生成新元素),将新元素添加到列表中,然后重复。被添加的元素可能出现在排序顺序的任何位置,而不仅仅是在末尾。