Heim > Artikel > Backend-Entwicklung > Warum erhalte ich „keine Übereinstimmung für ‚operator-‘ in ‚__last – __first‘“, wenn ich eine Liste mit der STL-Sortierung in absteigender Reihenfolge sortiere?
Sortieren einer Liste mit der STL-Sortierfunktion
Beim Sortieren einer Liste in absteigender Reihenfolge mit der STL-Sortierfunktion kann es zu einem Kompilierungsfehler kommen wenn Ihre Liste Elemente einer Struktur enthält und die Komparatorfunktion nicht richtig definiert ist. Der Fehler „keine Übereinstimmung für ‚operator-‘ in ‚__last – __first‘“ weist darauf hin, dass die Sortierfunktion die Reihenfolge der Elemente in Ihrer Liste nicht bestimmen kann.
Das Problem tritt auf, weil die Sortierfunktion Iteratoren mit wahlfreiem Zugriff erfordert. welche std::list
Um dieses Problem zu beheben, sollten Sie die Memberfunktion std::list
Hier ist ein Beispiel dafür, wie Sie std::list
Result.poly.sort([](const term& t1, const term& t2) { return t2.pow < t1.pow; });
Diese benutzerdefinierte Komparatorfunktion sortiert Ihre Liste von Strukturen ordnungsgemäß in absteigender Reihenfolge basierend auf dem Pow-Feld in jeder Struktur.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich „keine Übereinstimmung für ‚operator-‘ in ‚__last – __first‘“, wenn ich eine Liste mit der STL-Sortierung in absteigender Reihenfolge sortiere?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!