Comparaison de pointeurs dans une liste
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!
++
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!
++
A voir également:
- Comparaison de pointeurs dans une liste
- Liste déroulante excel - Guide
- Comparaison million milliard - Accueil - Technologies
- Liste code ascii - Guide
- Liste déroulante en cascade - Guide
- Liste de diffusion whatsapp - Guide
1 réponse
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
c tri de tableau
Bonne chance