Problème map et itérateur
Bonjour,
J'ai défini une map d'objets complexes (des classes).
Code:
1 2 3 4 5 6 7 8
| struct cmp
{
bool operator()(const UInt128* val1, const UInt128* val2) const{
return val1->compareTo(*val2);
}
};
map<const UInt128*, const Contact*, cmp> contacts; |
Les opérateurs ==, != <, >, <=, >= sont définis dans les classes UInt128 et Contact.
Le problème c'est que si je met 20 éléments dans ma map, lorsque je la parcours avec un itérateur de cette manière,
Code:
1 2 3 4
| map<const UInt128*, const Contact*, cmp>::const_iterator it;
for (it = contacts_.begin(); it != contacts_.end(); it++){
cout << "test" << endl;
} |
je n'ai que deux fois l'affichage "test". Autrement dit,
la map n'est pas enitèrement parcourue alors qu'en affichant contacts.size() avant et après la boucle, j'ai bien 20 d'affiché...
Par contre, j'ai bien 20 fois "test" si j'enlève le comparateur cmp dans la définition de la map, c'est à dire si je fais:
Code:
map<const UInt128*, const Contact*> contacts;
J'ai besoin du comparateur cmp. D'ou peut venir le problème et comment le résoudre?
Merci !