Heim > Backend-Entwicklung > C++ > Hauptteil

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

Linda Hamilton
Freigeben: 2024-11-10 22:00:03
Original
564 Leute haben es durchsucht

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());
Nach dem Login kopieren

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; 
    }
};
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage