Heim >Backend-Entwicklung >C++ >Warum kann „std::sort' eine „std::list' von Strukturen nicht sortieren?

Warum kann „std::sort' eine „std::list' von Strukturen nicht sortieren?

Linda Hamilton
Linda HamiltonOriginal
2024-11-10 22:00:03573Durchsuche

Why Does `std::sort` Fail to Sort a `std::list` of Structures?

Sortieren einer Liste mit der STL-Sortierfunktion: Ein Implementierungsproblem

Beim Versuch, eine Liste von Strukturen mit der Funktion std::sort zu sortieren , kann es zu einem Kompilierungsfehler kommen, der auf einen fehlenden Operator hinweist. Dieser Fehler tritt auf, wenn der bereitgestellte Komparator SortDescending Elemente einer std::list bearbeitet, die bidirektionale Iteratoren anstelle von Iteratoren mit wahlfreiem Zugriff unterstützt, die von std::sort benötigt werden.

Um dieses Problem zu beheben, anstatt zu verwenden std::sort verwenden Sie die Memberfunktion std::list<>::sort, die speziell für die Verarbeitung von Listen entwickelt wurde. Hier ist der geänderte Code mit std::list<>::sort:

Result.poly.sort(SortDescending());

Beachten Sie, dass die Mitgliedsfunktion std::list<>::sort auch eine Komparatorfunktion erfordert. Der SortDescending-Komparator bleibt unverändert:

struct SortDescending
{
    bool operator()(const term&amp; t1, const term&amp; t2)
    { 
        return t2.pow < t1.pow; 
    }
};

Durch die Verwendung von std::list<>::sort mit dem SortDescending-Komparator können Sie Ihre Liste erfolgreich in absteigender Reihenfolge basierend auf dem „pow“-Mitglied des sortieren 'Term'-Struktur.

Das obige ist der detaillierte Inhalt vonWarum kann „std::sort' eine „std::list' von Strukturen nicht sortieren?. 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