Maison > développement back-end > C++ > le corps du texte

Pourquoi est-ce que j'obtiens « aucune correspondance pour « opérateur- » dans « __last - __first » » lors du tri d'une liste par ordre décroissant à l'aide du tri STL ?

Patricia Arquette
Libérer: 2024-11-09 18:16:02
original
922 Les gens l'ont consulté

Why am I getting

Tri d'une liste avec la fonction de tri STL

Lors du tri d'une liste par ordre décroissant à l'aide de la fonction de tri STL, vous pouvez rencontrer une erreur de compilation si votre liste contient des éléments d'une structure et que la fonction de comparaison n'est pas correctement définie. L'erreur "aucune correspondance pour 'operator-' dans '__last - __first'" indique que la fonction de tri ne peut pas déterminer l'ordre des éléments dans votre liste.

Le problème se pose car la fonction de tri nécessite des itérateurs à accès aléatoire, quels std::list::itérateurs ne le sont pas. Les itérateurs de liste sont des itérateurs bidirectionnels, qui ne peuvent pas calculer directement la différence entre deux itérateurs. Cela empêche la fonction de tri de calculer correctement la plage d'éléments à trier.

Pour résoudre ce problème, vous devez utiliser la fonction membre std::list::sort au lieu de std::sort fonction. La fonction std::list::sort utilise des itérateurs bidirectionnels et peut gérer le tri des listes contenant votre structure.

Voici un exemple de la façon dont vous pouvez utiliser std::list::sort fonction pour trier votre liste par ordre décroissant :

Result.poly.sort([](const term& t1, const term& t2) { return t2.pow < t1.pow; });
Copier après la connexion

Cette fonction de comparateur personnalisé triera correctement votre liste de structures par ordre décroissant en fonction du champ pow dans chaque structure.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal