Existe-t-il un type de données/conteneur dans une langue vérifiant l'unicité du contenu plutôt que la valeur ou l'index avant d'insérer l'article?Conteneur qui vérifie l'unicité du contenu
1
A
Répondre
5
Oui, cela s'appelle un . La plupart des langues les implémentent sous une forme ou une autre.
0
Le problème avec cela est que la valeur peut être TOUT ce qui est très ouvert et pas toujours pratique.
0
SQL avec un champ UNIQUE. définit en Python. Noms de fichiers sur les systèmes de fichiers. Cela dépend de la façon dont vous définissez le "contenu".
2
Bien sûr, celui qui me vient à l'esprit est la classe NSSet de Cocoa. Le C++ STL a également une classe set.
Bien sûr, vous avez besoin d'un moyen de définir un objet unique au-delà de la simple comparaison de pointeur ou de référence. Par exemple, dans Cocoa, deux objets sont considérés comme identiques dans le but de NSSet s'ils répondent à isEqual:
avec YES
et ont le même code de hachage.
En effet. L'implémentation la plus typique est un "ensemble de hachage", qui vérifie l'unicité en calculant la valeur de hachage de chaque objet. – Noldorin
pour répondre à la 2ème partie de votre question, "hash set" indexe également les éléments sur la valeur de hachage des objets. –
Non seulement le hachage parce que c'est juste une condition nécessaire, pas suffisante. Vous devez toujours vérifier l'égalité lorsque le hachage est le même. – Joey