transfert entre priority_queue - C++ - Programmation
Marsh Posté le 03-02-2004 à 10:19:48
ben si tu as tant besoin que ça d'itérateur, maintient un vecteur ordonné
it = initial_queue.begin(); ça existe pas ça ?
Citation : on pouvait changer l'operator< utilisé par la queue .... |
non, c'est parti intégrante du type de toutes façons
Marsh Posté le 03-02-2004 à 10:36:30
taz a écrit : ben si tu as tant besoin que ça d'itérateur, maintient un vecteur ordonné |
o_O ?? Donc y a pas moyen d'eviter ce parcours avec recopie ?
Attends, j'ai corrigé le code + haut ^^
Marsh Posté le 03-02-2004 à 10:40:05
ben non. ce que tu as qu'à faire, c'est reprendre le code trivial de priority_queue et ajouter ce qu'il te faut. ou bosser directement sur un vecteur sans interface ....
Marsh Posté le 03-02-2004 à 10:41:30
valued_pixel p;
p = initial_queue.top();
final_queue.push(p);
=>
valued_pixel &p(initial_queue.top());
final_queue.push(p);
peut-être pour éviter une copie ?
(je parie que je suis complètement a coté )
Marsh Posté le 03-02-2004 à 10:44:28
ouais ouais, avec un const c'est encore mieux, mais bon, là n'est pas le gain recherché
Marsh Posté le 03-02-2004 à 11:04:34
taz a écrit : ben non. ce que tu as qu'à faire, c'est reprendre le code trivial de priority_queue et ajouter ce qu'il te faut. ou bosser directement sur un vecteur sans interface .... |
un vector ou je gere moi même l'insertion quoi :-/
Marsh Posté le 03-02-2004 à 11:08:13
bah tu peux faire un héritage public (pas de polymorphisme car ~ pas virtuel), et rajouter make_heap, push_heap, pop_heap, is_heap
Marsh Posté le 03-02-2004 à 09:44:30
J'ai deux priority_queue qui contiennent des instances de la structure :
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 :
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