priority_queue ignore ma fonction de comparaison
Bonjour,
J'essaie de me servir d'une priority queue sur une classe personnelle, tout compile, pas de warning, mais j'ai la nette impression que ma fonction personnalisée de tri n'est pas prise en compte:
J'ai des objets HedgeEval dans ma priority queue definis comme tels:
Code:
1 2 3 4 5 6 7 8
|
class HedgeEval
{
public:
OGLRMesh::HalfedgeHandle heh;
float eval;
HedgeEval( OGLRMesh::HalfedgeHandle h, float ev){ heh = h; eval = ev; };
}; |
Je définis ma fonction de comparaison dans une classe, comme indiqué dans les tutos STL que j'ai trouvé:
Code:
1 2 3 4 5 6 7 8 9 10
|
class CompareHedgeEval
{
public:
bool operator()( const HedgeEval& he1, const HedgeEval& he2) const
{
if(he1.eval > he2.eval) return true;
else return false;
}
}; |
je crée ma priority_queue
Code:
1 2
|
std::priority_queue< HedgeEval, vector< HedgeEval >, CompareHedgeEval > halfEdgeQueue; |
Et lorsque j'affiche les différentes valeurs de ma priority_queue, ils sont classés en ordre décroissant. J'ai donc essayé de modifier mon operator() en inversant les booléens de retour (true a la place de false et vice versa),
ou encore en remplacant < par >, ou meme en mettant juste un
J'ai invariablement mes éléments classés dans le meme ordre.
quelqu'un saurait il d'ou vient le probleme?
Merci
Z