J'ai besoin d'une structure de données quiOrdonné Structure de données qui permet d'éliminer efficacement les doublons
- doit être commandé (ajouter des éléments
a, b and c
à une structure vide, les fera être à des positions0, 1 and 2
). - Permet d'ajouter des éléments répétés. C'est, je peux avoir une liste avec
a, b, c, a, b
. - Permet de supprimer toutes les occurrences d'un élément donné (si je fais quelque chose comme
delete(1)
, il supprimera toutes les occurrences de1
dans la structure). Si j'ai des élémentsa, b, c, d, c, e
et supprimer l'élémentc
, je devrais obtenira, b, d, e
. - J'ai juste besoin d'accéder aux éléments de deux façons. Le premier, est lors de la suppression d'une ocorrence donnée (voir point ci-dessus) et l'autre est quand je convertis les données que j'ai dans cette structure en une liste.
Je ne sais pas vraiment quelle pourrait être la meilleure structure de données ici. Je pensais d'abord à quelque chose comme une liste (le problème est d'avoir une opération O(n)
lors de la suppression des éléments), mais peut-être qu'il me manque quelque chose? Qu'en est-il des arbres/tas? Hashtables/cartes?
Je dois supposer que je ferai autant d'ajouter que de supprimer avec cette structure de données.
Merci
Vous n'avez pas vraiment mentionné comment vous vous attendez à ce que les accès 'read' soient. Accédez-vous à l'élément par position, par exemple? À quelle vitesse cela doit-il être? Qu'advient-il des positions _après_ vous supprimez un élément particulier? Est-ce que les positions de l'autre élément changent en conséquence? –
de bons points. voir mon edit. –
On dirait que la solution de Dave est ce que vous cherchez alors. –