Y a-t-il un moyen pour récupérer un iterator d'un élément dont on connait la pair dans une multimap?
Je m'explique un peu mieux par un exemple.
typedef multimap<int, string, less<int> > months_type;
months_type months;
typedef months_type::value_type value_type;
months.insert(value_type(31, string("January")));
months.insert(value_type(28, string("February")));
months.insert(value_type(31, string("March")));
//...
months_type::iterator it;
it = months.find(30); //renvoi l'itérateur sur le 1er mois trouvé à 30j soit avril
Mais si on veut que l'itérateur soit directement positionné sur septembre, comment faire?
Dois-je passer tous les éléments un à un jusqu'à trouver le bon?
ex:
pair<months_type::iterator,months_type::iterator> p;
p = months.equal_range(30);
for (it = p->first; it != p->second; ++it)
if ( strcmp(it->second, "Septembre") == 0)
break;
//it est position correctement
Mais cette solution est lente si on considère non pas des mois mais une multimap où une clé peut posséder plusieurs millier de valeur.
Donc y a-t-il une autre méthode plus rapide? Une fonction que je ne connais pas, peut-être?
merci par avance de vos réponses