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:
Je définis ma fonction de comparaison dans une classe, comme indiqué dans les tutos STL que j'ai trouvé:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 crée ma priority_queue
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; } };
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),
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 std::priority_queue< HedgeEval, vector< HedgeEval >, CompareHedgeEval > halfEdgeQueue;
ou encore en remplacant < par >, ou meme en mettant juste un
J'ai invariablement mes éléments classés dans le meme ordre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part return true;
quelqu'un saurait il d'ou vient le probleme?
Merci
Z
Partager