Heim >Backend-Entwicklung >C++ >Können Sie benutzerdefinierte Typen mit der Standardbibliothek sortieren?

Können Sie benutzerdefinierte Typen mit der Standardbibliothek sortieren?

Barbara Streisand
Barbara StreisandOriginal
2024-11-11 11:39:03177Durchsuche

Can You Sort User-Defined Types with the Standard Library?

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!

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