Twitter iPhone pliant OnePlus 12 PS5 Disney+ Orange Livebox Windows 11 ChatGPT

Quelle méthode pour rechercher dans un multimap?

2 réponses
Avatar
Zoubidaman
Bonsoir,

j'ai vu qu'il y avait plusieurs méthodes pour rechercher toutes les valeurs
ayant une même clé dans un multimap. J'ai retenu les 2 méthodes suivantes:

Soit le multimap suivant:

typedef multimap<AnsiString,int> MAP;
typedef MAP::iterator it;
MAP toto;

toto.insert(make_pair("toto",5));
toto.insert(make_pair("titi",6));
toto.insert(make_pair("toto",7));
toto.insert(make_pair("toto",13));


//Première méthode

pair<it,it> Paire;
Paire = toto.equal_range("toto");

for (it ite = Paire.first; ite != Paire.second; ++ite)
ShowMessage(ite->second);

//Deuxième méthode
ITE it = toto.begin();

while (it != toto.upper_bound("toto"))
{
ShowMessage(it->second);
++it;
}


Laquelle des deux me conseillez vous?

2 réponses

Avatar
Fabien SK
//Deuxième méthode
ITE it = toto.begin();

while (it != toto.upper_bound("toto"))
{
ShowMessage(it->second);
++it;
}


Laquelle des deux me conseillez vous?


Les deux méthodes sont équivalentes apparement. En tous cas
"equal_range" est implémenté avec un appel à "lower_bound" et un à
"upper_bound" dans VC6.

Ta deuxième n'est pas bonne car tu fais une recherche avec "upper_bound"
par boucle. Sors cet appel de la boucle.

Fabien

Avatar
Zoubidaman
Merci de ta réponse...

J'ai en effet trouvé assez rapidement plus d'avantages à equal_range.