Tri d'une liste avec la fonction de tri STL : un problème de mise en œuvre
Lors de la tentative de tri d'une liste de structures à l'aide de la fonction std::sort , vous pouvez rencontrer une erreur de compilation indiquant un opérateur manquant. Cette erreur se produit lorsque le comparateur fourni, SortDescending, opère sur des éléments d'une std::list, qui prend en charge les itérateurs bidirectionnels plutôt que les itérateurs à accès aléatoire nécessaires à std::sort.
Pour résoudre ce problème, au lieu d'utiliser std::sort, utilisez la fonction membre std::list<>::sort, conçue pour gérer spécifiquement les listes. Voici le code modifié en utilisant std::list<>::sort:
Result.poly.sort(SortDescending());
Notez que la fonction membre std::list<>::sort nécessite également une fonction de comparaison. Le comparateur SortDescending reste inchangé :
struct SortDescending { bool operator()(const term& t1, const term& t2) { return t2.pow < t1.pow; } };
En utilisant std::list<>::sort avec le comparateur SortDescending, vous pouvez réussir à trier votre liste par ordre décroissant en fonction du membre 'pow' du structure de « terme ».
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!