Salut,
J'ai besoin de manipuler des paires de valeurs numériques (attribut1 = un entier, attribut2 = un flottant)
Je dois parcourir les paires dans l'ordre croissant de l'attribut2...jusque là pas trop de problème. Maintenant il peut arriver qu'en cours de route des nouvelles paires dont l'identifiant unique est attribut1 arrivent ou disparaissent, dans ce cas je dois reprendre le parcours depuis le début dans l'ordre croissant de attribut2.
Voici comment je compte faire:
1- je prends une structure typedef struct { int attr1; double attr2; } paire;
2- je construis un vecteur vector<paire> vectPaires avec les paires courantes
3- je trie ce vecteur selon un prédicateur sur attribut2
4- je commence le parcours dans l'ordre des indices du vecteur
5- si des paires disparaissent je les recherche une par une dans le vecteur (avec find_if) et je les retire (avec remove), inutile de retrier le vecteur je reprends le parcours du début
6- si des paires apparaissent je les ajoute au vecteur, puis je le retrie et je reprends le parcours du début.
J'ai le sentiment que ce n'est pas très optimal mais je n'ai pas trouvé mieux...je compte sur vous pour dire s'il y a plus efficace
Partager