Sortieren benutzerdefinierter Typen mit der Standardbibliothek
Beim Sortieren einer Sammlung benutzerdefinierter Datentypen müssen Programmierer diese häufig anpassen Sortierreihenfolge basierend auf bestimmten Feldern oder Eigenschaften innerhalb dieser Typen. Diese Frage untersucht, ob die Sortierfunktion der Standardbibliothek eine solche anpassbare Sortierung unterstützen kann.
Standardsortierung verwenden
Die Standardbibliothek bietet eine Sortiermethode, die das Sortieren von Elementen innerhalb eines ermöglicht Container. Diese Methode ruft intern die Funktion < auf. Der Betreiber bestimmt die Reihenfolge. Um die Standardsortierung für benutzerdefinierte Typen nutzen zu können, muss Ihr Typ < Operator, um die gewünschte Reihenfolge zu definieren.
Betrachten Sie beispielsweise die MyType-Struktur:
struct MyType { int a; int b; };
Um einen Vektor von MyType basierend auf einem Feld mithilfe der Standardsortierung zu sortieren, würden Sie Folgendes implementieren < Operator wie folgt:
bool operator < (const MyType& other) const { return this->a < other.a; }</p> <p>Mit dieser Implementierung können Sie den Vektor dann sortieren mit:</p> <pre class="brush:php;toolbar:false">std::sort(moo.begin(), moo.end());
Verwenden benutzerdefinierter Sortierfunktionen
Alternativ können Sie anstelle der Implementierung von < -Operator können Sie eine benutzerdefinierte Sortierfunktion als drittes Argument an die Sortiermethode übergeben. Diese Funktion gibt einen booleschen Wert zurück, der die Ordnungsbeziehung zwischen zwei Elementen angibt.
Um beispielsweise basierend auf dem b-Feld von MyType zu sortieren:
bool compareByB(const MyType& t1, const MyType& t2) { return t1.b < t2.b; }
Sie würden die Sortierung dann wie folgt aufrufen:
std::sort(moo.begin(), moo.end(), compareByB);
Dieser Ansatz ermöglicht mehr Flexibilität bei der Festlegung der Sortierreihenfolge, insbesondere wenn mehrere Sortierkriterien erforderlich sind.
Das obige ist der detaillierte Inhalt vonKönnen Sie benutzerdefinierte Typen mit der Standardbibliothek sortieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!