Recherche dans un set échoue
Bonjour,
Je rencontre un problème à l'utilisation de std::set. Mon objectif est d'effacer un élément donné au moyen de set::erase. Cependant cette fonction est sans effet, j'ai déterminé que le problème se situe plutôt dans la recherche de l'élément, en effet ce code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
set<Entity*,drawPriorityComparison>& layer = m_draw_layers[ent->getDrawLayer()];
cout << "Searching for: " << ent << endl;
for (set<Entity*,drawPriorityComparison>::iterator it = layer.begin(); it != layer.end(); ++it)
{
cout << *it << endl;
}
set<Entity*,drawPriorityComparison>::iterator it = layer.find(ent);
if (it == layer.end())
{
cout << "it is set::end" << endl;
} |
Donne une fois exécuté dans son contexte:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
Searching for: 0x8d9da80
0x8d9e080
0x8d9e000
0x8d9df80
0x8d9df00
0x8d9de80
0x8d9de00
0x8d9dd80
0x8d9dd00
0x8d9dc80
0x8d9dc00
0x8d9db80
0x8d9db00
0x8d9da80
0x8d9e100
0x8d9eb00
0x8d9ea80
0x8d9ea00
0x8d9e980
0x8d9e900
0x8d9e880
0x8d9e800
0x8d9e780
0x8d9e700
0x8d9e680
0x8d9e600
0x8d9e580
0x8d9e500
0x8d9e480
0x8d9e400
0x8d9e380
0x8d9e300
0x8d9e280
0x8d9e200
0x8d9e180
it is set::end |
Comment se fait-il que set::find ne trouve pas le pointeur que je recherche alors qu'il est manifestement présent et accessible lors d'une transversale du set?
Merci d'avance.