Comparaison de pointeurs dans une liste

Fermé
ezechiel - 5 avril 2007 à 12:02
mamiemando Messages postés 33401 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 28 novembre 2024 - 6 avril 2007 à 14:06
Bonjour tout le monde.
Je suis confronté depuis hierà un problème ardu en C++ qui se décrit comme suis:
je dispose d'une liste doublement chaînée de pointeur d'objet A
list<A*>MaListe.

class A{
private:
int id;
}

Je voudrais faire un tri sur cette liste en fonction des id mais comme vous l'aurez deviné, un MaListe->sort() ne fonctionne pas car comparaison de pointeur et nom d'objet de classe A.(
NB: j'ai redefini les opérateurs de comparaison dans ma classe A)
Je pense qu'il faut donner un prédicat unaire à la fonction sort du genre sort(MonPredicat<A*>) mais je n'ai aucune idée de la façon d'écrire ce template.
Si vous pouviez m'aider ce serai t sympa!
++

1 réponse

mamiemando Messages postés 33401 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 28 novembre 2024 7 804
6 avril 2007 à 14:06
Euh attend si l'objectif c'est d'avoir une liste triée d'élements, pourquoi ne pas directement utiliser des std::set (pas de doublons au sens de la relation d'ordre) ou des std::multiset (doublons autorisés au sens de la relation d'ordre). La relation d'ordre utilisé par défaut est <, mais tu peux la redéfinir :
c tri de tableau

Bonne chance
0