J'ai deux priority_queue qui contiennent des instances de la structure :
Code :
- struct valued_pixel
- {
- size_t x;
- size_t y;
- float harris_value;
- };
|
J'utilmise un operateur de comapraison < qui tri ces structure selon leur valeur de harris_value.
Au final j'obtiens en fin de ma fonction une priority_queue remplie de valued_pixel triée par harris_value décroissante.
la ca se corse ^^
maintenant, je veut récupérer les N premiers éléments de cette priority_queue et les rangé dans une autre priority_queue où ils seront classé par y pui x croissants.
Actuellement je fait un boucle style :
Code :
- PIXELLIST_1 initial_queue;
- PIXELLIST_2 final_queue;
- valued_pixel p;
- while( !initial_queue.empty() )
- {
- p = initial_queue.top();
- final_queue.push(p);
- initial_queue.pop();
- }
|
Les PIXELLIST_1 et PIXELLIST_2 sont des typedefs sur l'instantiation du template priority_queue.
c'est moche ... y aurait pas un moyen moins moche qui minimiserais ce genre de gymnastique. je me rappelle vagueent d'une astuce dans laquelle on pouvait changer l'operator< utilisé par la queue ....
Ou alors ai-je fumé ^^
Message édité par Joel F le 03-02-2004 à 10:36:47