(je ne suis pas sûr de savoir comment résumer cette question dans le titre)algorithme efficace pour mettre à jour une gamme de propriétés d'objets
J'ai un nombre aléatoire d'objets de classe A avec deux propriétés, y compris Couleur. Je reçois ensuite un nombre aléatoire d'objets de classe B, qui ont tous la propriété de couleur. J'ai besoin de mettre à jour ma gamme d'objets de classe A pour correspondre à la fois aux propriétés de couleur des objets de classe B et au nombre d'objets de classe B. Les objets de classe A peuvent être supprimés, créés ou modifiés. Notamment, il peut ne jamais exister deux objets de classe A avec la même couleur. La méthode la plus simple consiste à supprimer tous les objets de classe A puis à en créer de nouveaux (le même nombre d'objets de classe B) et à définir la propriété color de chaque objet nouvellement créé pour qu'il corresponde à la propriété color. Cependant, en termes de performances, il est très avantageux de modifier la propriété color d'un objet de classe A pour qu'il corresponde à la propriété color d'un objet de classe B, plutôt que de supprimer un objet de classe A et d'en créer un nouveau.
Les objets de classe A sont initialement contenus dans une carte. Les objets de classe B arrivent dans un vecteur.
Je me demande si quelqu'un reconnaît le problème et connaît un certain type de motif élégant?
La carte de classe A objecte-t-elle une carte triée? Quelle est la clé? – Gassa
Si l'ordre compte, ce problème ressemble à trouver la [modifier la distance] (http://en.wikipedia.org/wiki/Edit_distance). Sinon, nous pouvons simplement compter le nombre d'objets de classe B ayant chaque couleur (en utilisant une carte, par exemple, ou un tableau s'il y a très peu de couleurs prédéfinies). Après cela, comptez le nombre d'objets de classe A ayant chaque couleur de la même manière. De toute évidence, seuls les objets de classe A min (#A: c, #B: c) 'de chaque couleur' c' restent. Tous les objets de classe A restants peuvent avoir leur couleur réaffectée. – Gassa
@Gassa: C'est actuellement un HashMap, avec une propriété d'objet arbitraire comme clé (mais pas la propriété de couleur). Cependant, il y a de la place pour changer les choses ici. – user3607022