Tri d'une liste d'un type personnalisé
Je veux avoir un stl list
des objets où chaque objet contient deux int
s'.
Par la suite je veux la liste avec la stl::sort après la valeur de la première int
.
Comment dois-je dire à la fonction de tri que l'on est censé trier après la première int
?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez spécifier un tri personnalisé prédicat. En C++11 c'est mieux de le faire avec un lambda:
Dans les anciennes versions de C++, vous devez écrire une fonction appropriée:
(Au lieu si
ipair
bien sûr, vous pouvez avoir votre propre structure de données; il suffit de modifier la fonction de comparaison en conséquence pour accéder aux données membres.)Enfin, si cela fait sens, vous pouvez également équiper votre classe personnalisée avec un
operator<
. Qui vous permet d'utiliser la classe librement dans tout commandé contexte, mais assurez-vous de comprendre les conséquences de cela.std::list::sort a un argument de forme, avec le premier argument de la fonction de comparaison.
std::sort
aussi de ne pas travailler surstd::list
s... 🙁Vous pouvez faire quelque chose comme ceci:
Si le type est une structure ou une classe, il serait de travailler sur quelque chose comme ceci:
Ou vous pouvez définir
operator <
pour votre struct et il suffit d'appelertest_list.sort()