Bonjour,
J'ai défini une map d'objets complexes (des classes).
Les opérateurs ==, != <, >, <=, >= sont définis dans les classes UInt128 et Contact.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
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,
je n'ai que deux fois l'affichage "test". Autrement dit,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 map<const UInt128*, const Contact*, cmp>::const_iterator it; for (it = contacts_.begin(); it != contacts_.end(); it++){ cout << "test" << endl; }
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:
J'ai besoin du comparateur cmp. D'ou peut venir le problème et comment le résoudre?
Code : Sélectionner tout - Visualiser dans une fenêtre à part map<const UInt128*, const Contact*> contacts;
Merci !
Partager