Listes et sort [résolu]

Listes et sort [résolu] - C++ - Programmation

Marsh Posté le 22-01-2008 à 09:09:44    

Bonjour
 
J'ai une question assez stupide mais, curieusement, je n'ai pas de réponse élégante.
 
J'ai en c++ une list<machin *>, machin étant une classe que j'ai défini (ok, elle ne s'appelle pas comme ça).  
Je veux trier cette liste, j'ai surchargé l'opérateur "operator<" de la classe machin, ce qui m'autorise à utiliser .sort() sur une list<machin>, mais pas sur une list<machin *>.
 
Alors je peux soit écrire ma fonction de tri (qui sera moins bien que celle de la STL), soit définir une classe presque vide qui se comporte comme un "machin *" et où je surcharge <, mais il y a peut-être plus beau.
 
Merci d'avance


Message édité par Koko90 le 22-01-2008 à 11:26:07

---------------
Découvrez l'anthologie des posts de Mikhail. Je suis le cinéphile déviant.
Reply

Marsh Posté le 22-01-2008 à 09:09:44   

Reply

Marsh Posté le 22-01-2008 à 10:50:58    

Salut,
 
Tu peux plus simplement définir ton opérateur de comparaison comme une fonction/un foncteur à passer à l'algo choisi.

Reply

Marsh Posté le 22-01-2008 à 11:25:41    

IrmatDen a écrit :

Salut,
 
Tu peux plus simplement définir ton opérateur de comparaison comme une fonction/un foncteur à passer à l'algo choisi.


Je suis bête, en effet c'est la solution, il doit y avoir un sort qui prend un opérateur en paramètre...
 
Bon, entre temps je me suis débrouillé pour manipuler directement une list<machin> à la place d'une list<machin *>, quelques regexp m'ont permi de retoucher mon code dans son ensemble.
 
Mais la prochaine fois je saurais quoi faire. Merci beaucoup.

Message cité 1 fois
Message édité par Koko90 le 22-01-2008 à 11:27:02

---------------
Découvrez l'anthologie des posts de Mikhail. Je suis le cinéphile déviant.
Reply

Marsh Posté le 22-01-2008 à 11:37:44    

Koko90 a écrit :

Je suis bête, en effet c'est la solution, il doit y avoir un sort qui prend un opérateur en paramètre...


Tous ceux de la STL ;)

Reply

Sujets relatifs:

Leave a Replay

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