Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3665 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  transfert entre priority_queue

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

transfert entre priority_queue

n°629329
Joel F
Real men use unique_ptr
Posté le 03-02-2004 à 09:44:30  profilanswer
 

J'ai deux priority_queue qui contiennent des instances de la structure :
 

Code :
  1. struct valued_pixel
  2. {
  3.     size_t x;
  4.     size_t y;
  5.     float  harris_value;
  6. };


 
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 :
  1. PIXELLIST_1 initial_queue;
  2. PIXELLIST_2 final_queue;
  3. valued_pixel p;
  4. while( !initial_queue.empty() )
  5. {
  6.     p = initial_queue.top();
  7.     final_queue.push(p);
  8.     initial_queue.pop();
  9. }


 
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
mood
Publicité
Posté le 03-02-2004 à 09:44:30  profilanswer
 

n°629365
Taz
bisounours-codeur
Posté le 03-02-2004 à 10:19:48  profilanswer
 

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


Message édité par Taz le 03-02-2004 à 10:21:45
n°629372
Joel F
Real men use unique_ptr
Posté le 03-02-2004 à 10:36:30  profilanswer
 

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 ^^


Message édité par Joel F le 03-02-2004 à 10:37:04
n°629374
Taz
bisounours-codeur
Posté le 03-02-2004 à 10:40:05  profilanswer
 

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 ....

n°629376
blackgodde​ss
vive le troll !
Posté le 03-02-2004 à 10:41:30  profilanswer
 

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é :p)


---------------
-( BlackGoddess )-
n°629380
Taz
bisounours-codeur
Posté le 03-02-2004 à 10:44:28  profilanswer
 

ouais ouais, avec un const c'est encore mieux, mais bon, là n'est pas le gain recherché

n°629409
Joel F
Real men use unique_ptr
Posté le 03-02-2004 à 11:04:34  profilanswer
 

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 :-/

n°629413
Taz
bisounours-codeur
Posté le 03-02-2004 à 11:08:13  profilanswer
 

bah tu peux faire un héritage public (pas de polymorphisme car ~ pas virtuel), et rajouter make_heap, push_heap, pop_heap, is_heap

n°629439
Joel F
Real men use unique_ptr
Posté le 03-02-2004 à 11:27:26  profilanswer
 

Ok je vais me faire ma multipriority_queue quoi ^^

n°629456
Taz
bisounours-codeur
Posté le 03-02-2004 à 11:39:15  profilanswer
 

ouaip, cai supair facile


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  transfert entre priority_queue

 

Sujets relatifs
transfert d'objets entre servletsSession et transfert de variables de page en page...
Composants pour transfert de fichiers...[Java]Transfert d'action d'une frame à l'autre
transfert de variable d'une page a une autre ?Transfert bdd free --> OVH [résolu]
[visual c++] transfert via FTP[API] Comment savoir si la queue d'impression est vide ou non ?
[JAVA] FTP sous Eclipse, comment activer le transfert ASCII?[C++] Transfert de fichier...Prog Inside !!! hein, pas du rezo !
Plus de sujets relatifs à : transfert entre priority_queue


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)