Мне нужна структура данных в Ruby, которая сортирует свои элементы при добавлении или удалении элементов и позволяет (по крайней мере) извлекать первый элемент из списка.
Самая близкая вещь, которую я нашел в документах ruby, это SortedSet . Однако, похоже, это не обеспечивает какого-либо способа доступа к элементам по их индексу (или даже к отключению первого элемента)
Это конкретные операции, которые мне нужны:
- Добавить объект в список
- Удаление первого объекта из списка
- Проверить, есть ли объект в списке
- Удалить объект из списка (по объекту, а не по индексу)
Есть ли в ruby что-нибудь встроенное для этого, или есть какие-нибудь библиотеки, которые я могу взять, которые мне это дадут? Я мог бы реализовать его без особых затруднений, но я бы предпочел использовать уже существующий, если это возможно.
В настоящее время я использую Ruby 1.8, хотя переключение на 1.9, вероятно, будет в порядке.
EDIT:
Так как кажется, что есть некоторая путаница, мне нужна сортировка не по порядку вставки объектов. Мне нужно, чтобы сортировка была основана на операторе <=>
. Как правило, я получаю первый элемент, обрабатывая его (который может генерировать новые элементы), добавляя новые элементы в список, а затем повторяя. Добавляемые элементы могут оказаться в любом месте в порядке сортировки, а не только в конце.