Heim > Backend-Entwicklung > C++ > Hauptteil

Können Sie benutzerdefinierte Typen mit der Standardbibliothek sortieren?

Barbara Streisand
Freigeben: 2024-11-11 11:39:03
Original
126 Leute haben es durchsucht

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

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

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

Sie würden die Sortierung dann wie folgt aufrufen:

std::sort(moo.begin(), moo.end(), compareByB);
Nach dem Login kopieren

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!

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