Heim  >  Artikel  >  Backend-Entwicklung  >  Wie sortiere ich eine Liste benutzerdefinierter Strukturen in absteigender Reihenfolge mithilfe der Sortierfunktion von STL?

Wie sortiere ich eine Liste benutzerdefinierter Strukturen in absteigender Reihenfolge mithilfe der Sortierfunktion von STL?

Barbara Streisand
Barbara StreisandOriginal
2024-11-09 04:44:02784Durchsuche

How to Sort a List of Custom Structs in Descending Order Using STL's Sort Function?

Sortieren einer Liste mit der Sortierfunktion von STL: Überwinden von Kompilierungsfehlern

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn