Tri d'objet pointé dans un tableau - C++ - Programmation
Marsh Posté le 24-08-2010 à 13:35:08
Les operateurs doivent avoir au moins un argument qui est d'un type defini par l'utilisateur (classe ou enum, les pointeurs n'en sont pas).
Les fonctions de tris de la bibliotheque standard prennent un foncteur en argument, donc tu peux passer ce que tu veux (fonction libre ou bien instance d'une classe ayant operator() comme membre). Si tu ecris la fonction de tri toi-meme, je te suggere de faire de meme. La bibliotheque standard a std::less<> qui permet de transformer l'operateur< en foncteur.
Marsh Posté le 27-08-2010 à 14:46:27
Il faut que tu utilises le 3ème argument de std::sort.
Exemple complet:
Code :
|
Marsh Posté le 24-08-2010 à 13:13:14
Bonjour,
Dans le cadre de mon travail de programmation, je souhaiterais réaliser le tri des éléments d'un tableau contenant des adresses d'éléments de grande taille (afin d'alléger le travail et d'accélérer le code, je préfère conserver les adresses des éléments et non les éléments eux-mêmes).
Au final, le code bute sur l'écriture de l'opérateur de comparaison entre éléments :
Ainsi, le compilateur renvoie le message pour ces lignes :
L'algorithme de tri a été défini séparément et fonctionne tout à fait correctement sur des éléments non pointés (ie opérateur bool operator<(MaClasse a,MaClasse b) plutot que bool operator<(MaClasse* a,MaClasse* b)).
Est-ce que certains d'entre-vous sauraient d'où vient le problème et comment le corriger ?
Est-ce qu'il est possible, en C++, d'introduire des opérateurs de comparaison pour des opérations de tri, qui portent sur des pointeurs d'éléments et non les éléments eux-mêmes ?
En vous remerciant d'avance de votre aide