Suppression de doublons dans une collection
Bonjour,
Je doit gérer une collection d'objets et je voudrais supprimer de cette collection les doublons. Essentiellement, un objet contient des données sur 20 char. Un objet est égal à un autre objet si les 20 char des 2 objets sont égaux.
La solution à base de hash ne me plait pas trop car avec un hash il est possible d'avoir des collisions (c'est rare mais cela peut arriver) et à ce moment, je pourrai croire à tord que 2 objets sont identiques parce que leurs hash sont identiques.
Pour l'instant, ma collection contient environ 2 000 000 objets avec un certain (probablement grand) nombre de doublons. Au final, je ne connais pas encore le nombre d'objets uniques de ma collection (et je n'ai encore aucun ordre de grandeur).
Actuellement, je vois 2 options possibles :
- soit faire une std::map avec comme clé les 20 char. Est ce que c'est jouable en terme de performance ?
- soit le gérer comme une std::list ou un std::vector (peut m'importe) et ensuite faire du ménage dans cette collection. Mais j'ai peur que cela soit un peu long car pour cela, il faut tester chaque objet avec les autres objets de la liste et supprimer en cas d'égalité.
Si vous avez des idées pour essayer d'organiser un peu cela, je suis preneur
Merci d'avance