[C++] set et ref/pointeur vers objet

set et ref/pointeur vers objet [C++] - C++ - Programmation

Marsh Posté le 06-04-2008 à 19:27:53    

:hello:  
 
J'ai un problème que je n'arrive pas à résoudre.  
J'ai un objet Point avec les opérateurs < et > demandé par std::set. Ceci me permet donc d'ajouter des Point dans un set.
 
Maintenant j'ai des objets triangles qui doivent "pointer" vers ces points. J'ai bien pensé à utiliser des pointeurs mais je ne sais pas si set peut modifier les emplacements mémoire des objets :/
 
J'aimerait donc savoir comment je pourrait résoudre ce probleme efficacement ?


Message édité par ffomnislash le 06-04-2008 à 19:28:44
Reply

Marsh Posté le 06-04-2008 à 19:27:53   

Reply

Marsh Posté le 06-04-2008 à 19:44:02    

hmmm, je pense qu'il manque une entité au problème qui serait un "pool of points" qui contiendrait tt les points jamais créée. Ton set et tes triangles aurait ensuite des pointeurs ou des itérateurs vers ces points

Reply

Marsh Posté le 06-04-2008 à 19:56:45    

std::set ne change pas ses nodes de place. Tant que tu ne supprimes pas un node, il ne se déplace pas. Sous réserve que tu n'utilises pas un GC particulier avec ton programme.
 
Ceci n'est pas vrai pour un vecteur ou une string par exemple, qui elle peut déplacer ses éléments sans rien te dire.

Reply

Marsh Posté le 06-04-2008 à 19:59:11    

Joel F a écrit :

hmmm, je pense qu'il manque une entité au problème qui serait un "pool of points" qui contiendrait tt les points jamais créée. Ton set et tes triangles aurait ensuite des pointeurs ou des itérateurs vers ces points


 
set a besoin de l'objet pour utiliser l'opérateur < et >, donc exit les poiteurs (les itérateurs je ne sais pas, je débute en c++)
 

jesus_christ a écrit :

std::set ne change pas ses nodes de place. Tant que tu ne supprimes pas un node, il ne se déplace pas. Sous réserve que tu n'utilises pas un GC particulier avec ton programme.
 
Ceci n'est pas vrai pour un vecteur ou une string par exemple, qui elle peut déplacer ses éléments sans rien te dire.


 
Oki c'est la confirmation que j'attendait, merci :)

Reply

Marsh Posté le 06-04-2008 à 19:59:16    

je rajoute que c'est vrai aussi pour std::map, std::multimap, std::multiset et std::dequeue.

Reply

Marsh Posté le 06-04-2008 à 20:02:04    

ffomnislash a écrit :


set a besoin de l'objet pour utiliser l'opérateur < et >, donc exit les poiteurs (les itérateurs je ne sais pas, je débute en c++)


 
tu te fait une classe point_proxy qui pointe vers un point et tu defini < pour point_proxy en demandant à comparer les point qu'il pointent et ca devrais suffire pour  
te permettre de faire des set<point_proxy>

Reply

Marsh Posté le 06-04-2008 à 23:29:30    

Joel F a écrit :


 
tu te fait une classe point_proxy qui pointe vers un point et tu defini < pour point_proxy en demandant à comparer les point qu'il pointent et ca devrais suffire pour  
te permettre de faire des set<point_proxy>


 
oui mais ca n'est pas très propre  :p

Reply

Marsh Posté le 07-04-2008 à 09:02:40    

en quel honneur ?
Le proxy est un design pattern de base ...


Message édité par Joel F le 07-04-2008 à 09:02:56
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed