bonjour j'ai un itérateur fonctionnant sur un multimap, mon multimap comprend deux champs le premier 1 est la valeur clé qui est une chaîne nom et le second 1 est la donnée qui est un pointeur vers un objet appelé Employee. dans mon programme, je dois être capable de trouver un élément dans ma carte en utilisant l'itérateur (parce que j'essaie de trouver les données par son ID et non par la valeur de la clé). Je veux avoir une sorte d'indicateur qui me dira si l'élément que je cherche est dans ma carte ou non. merci d'avance. et voici mon code Rechercher:itérateur pour la carte - problème avec la recherche
MultiMap::iterator iterator;
iterator=m_municipalityMap.begin();
bool flag = false;
while(!(flag) && iterator != m_municipalityMap.end())
{
if(strcmp(iterator->second->GetId() , id) == 0)
{
flag=true;
break;
}
iterator++;
}
if (flag==false)
cout << "could not find Employee"<<endl;
return iterator;
ce que je dois savoir s'il y a un moyen de savoir si l'itérateur se tient sur rien comme comparer à NULL sur les pointeurs
Juste un petit commentaire: utiliser '+ + iterator' au lieu de 'iterator ++'. – Wok
Quelques commentaires: comme l'a souligné Kirill, cette solution n'est pas évolutive. 2: utilisez std :: string si possible. 3: ne pas vérifier le drapeau si vous utilisez le break. 3: préfèrent pour plus longtemps. Je ne vois aucune erreur évidente dans votre code, alors vérifiez en affichant Id et GetId() dans votre boucle. – stefaanv
J'utilise le drapeau parce que j'ai besoin de m'indiquer si j'ai trouvé l'article ou non –