Beim Versuch, eine Liste mit Instanzen einer benutzerdefinierten Struktur in absteigender Reihenfolge zu sortieren, ist ein Kompilierungsfehler aufgetreten Dabei geht es um die Nichtverfügbarkeit des Operators „-“ für die Liste „Ergebnis“. Dieser Fehler ist auf die Diskrepanz zwischen den Anforderungen der Sortierfunktion an Direktzugriffsiteratoren und den von std::list::begin() und std::list::end() zurückgegebenen bidirektionalen Iteratoren zurückzuführen.
Um dieses Problem zu beheben Bei diesem Problem ist es ratsam, die Memberfunktion std::list::sort zu verwenden, die auf die Arbeit mit bidirektionalen Iteratoren zugeschnitten ist. Diese Funktion verwendet dieselben Argumente wie std::sort und verwendet intern einen für Listen optimierten Sortieralgorithmus.
Hier ist eine Illustration, wie Sie die Funktion std::list::sort für Ihr spezifisches Szenario verwenden:
Result.poly.sort([](const term& t1, const term& t2) { return t2.pow < t1.pow; });
Mit dieser Anpassung wird der Kompilierungsfehler behoben und Ihr Code sortiert die „poly“-Liste in absteigender Reihenfolge basierend auf dem „pow“-Mitglied seiner konstituierenden „term“-Elemente.
Das obige ist der detaillierte Inhalt vonWie sortiere ich eine Liste benutzerdefinierter Strukturen in absteigender Reihenfolge mithilfe der Sortierfunktion von STL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!