Sortieren benutzerdefinierter Typen mit der Standardbibliothekssortierung
Frage:
Kann der Standard Die Sortierfunktion der Bibliothek kann verwendet werden, um einen Vektor benutzerdefinierter Strukturen basierend auf einem bestimmten Feld innerhalb der zu sortieren Strukturen?
Beispiel:
struct MyType { int a; int b; }; vector<MyType> moo; // Insert data into moo... // Sort moo by the value of the 'a' field
Antwort:
Ja, die Standard-Bibliothekssortierfunktion kann dieses Szenario bewältigen wenn der benutzerdefinierte Typ bestimmte Anforderungen erfüllt:
Implementierung:
struct MyType { int a; int b; bool operator<(const MyType& other) const { // Implementation that compares the 'a' fields } // Copy constructor MyType(const MyType& other) : a(other.a), b(other.b) { } // Other constructors... };
Alternativer Ansatz unter Verwendung einer Ordnungsfunktion:
Bei Überlastung der Wenn ein Vergleichsoperator nicht möglich ist, kann stattdessen eine Ordnungsfunktion oder ein Funktor als drittes Argument für die Sortierung verwendet werden Funktion.
bool type_is_less(const MyType& t1, const MyType& t2) { // Comparison logic } std::sort(c.begin(), c.end(), type_is_less);
Dieser Ansatz kann in Fällen von Vorteil sein, in denen:
Das obige ist der detaillierte Inhalt vonKann die Sortierfunktion der Standardbibliothek benutzerdefinierte Typen basierend auf bestimmten Feldern sortieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!