J'ai besoin d'une structure de données dans Ruby qui garde ses éléments triés lorsque des éléments sont ajoutés ou supprimés et permet (au moins) la possibilité d'enlever le premier élément de la liste.Est-ce que ruby a un type de liste qui garde le contenu trié lorsque des ajouts/suppressions se produisent?
La chose la plus proche que j'ai trouvée dans les docs ruby est SortedSet. Toutefois, cela ne semble pas fournir un moyen d'accéder aux éléments par leur index (ou même pop le premier élément off)
Ce sont les opérations spécifiques dont j'ai besoin:
- Ajouter un objet à la liste
- Pop premier objet hors de la liste
- Vérifiez si un objet est dans la liste
- Supprimer objet dans la liste (par objet, et non par index)
Est-ce que ruby a quelque chose de prévu à cet effet, ou est-ce qu'il y a des bibliothèques que je peux récupérer et qui me le donneraient? Je pourrais en mettre un sans trop de difficulté mais je préfèrerais en utiliser une préexistante si possible.
Actuellement j'utilise Ruby 1.8, bien que passer à 1.9 serait probablement correct.
EDIT:
Comme il semble y avoir une certaine confusion, le tri j'ai besoin est pas l'ordre dans lequel les objets sont insérés. J'ai besoin que le tri soit basé sur l'opérateur <=>
. Généralement, je vais faire apparaître le premier élément, le traiter (ce qui peut générer de nouveaux éléments), ajouter de nouveaux éléments à la liste, puis répéter. Les éléments ajoutés peuvent se retrouver n'importe où dans l'ordre de tri, pas seulement à la fin.
Tout d'abord, votre lien ne fonctionne pas. (C'est un lien vers votre disque dur local, ce qui ne va pas fonctionner, poster un lien externe si vous le pouvez.) Deuxièmement, vous auriez probablement besoin d'écrire quelque chose comme ça, je n'ai pas vu un pré bibliothèque existante qui fait cela. Cependant, je serais intéressé de voir ce que vous proposez. Bonne chance! :) –
Doh, totalement oublié que j'utilisais une copie locale des docs. – Herms