308 votes

Trier un vecteur d’objets personnalisés

Comment doit-on faire sur le tri d’un vecteur contenant personnalisé (c'est-à-dire définie par l’utilisateur) des objets.
Sans doute, standard STL algorithme Tri avec un prédicat (une fonction ou un objet de fonction) qui fonctionnerait sur l’un des champs (comme une clé de tri) dans l’objet personnalisé doit être utilisé.
Je suis sur la bonne voie ?

429voto

Alan Points 7273

Un exemple simple à l’aide``


Edit : Comme souligné Kirill V. Lyadvinsky, plutôt que de fournir un prédicat de la sorte, vous pouvez substituer le :

En utilisant cette méthode signifie que vous pouvez trier simplement le vecteur comme suit :

63voto

Kirill V. Lyadvinsky Points 47627

Vous pouvez utiliser functor comme troisième argument de , ou vous pouvez définir dans votre classe.

18voto

xtofl Points 22333

Vous êtes sur la bonne voie. ``utilisera par défaut l’opérateur ou fournir un foncteur qui effectue la comparaison, comme ceci :

L’avantage de l’utilisation d’un foncteur est que vous pouvez utiliser une fonction d’accéder aux membres privés de la classe.

4voto

swatkat Points 2389

Oui, std::sort() avec le troisième paramètre (fonction ou objet) serait plus facile. Un exemple :
http://www.Cplusplus.com/Reference/Algorithm/sort/

4voto

BobbyShaftoe Points 19925

Dans votre classe, vous pouvez surcharger l'opérateur "<".

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X