Heim > Backend-Entwicklung > C++ > Hauptteil

Wie sortiere ich einen Vektor benutzerdefinierter Typen nach bestimmten Variablen?

Susan Sarandon
Freigeben: 2024-11-15 01:36:02
Original
196 Leute haben es durchsucht

How to Sort a Vector of User-Defined Types by Specific Variables?

Benutzerdefinierte Typen in einem Vektor nach bestimmten Variablen sortieren

Um einen Vektor benutzerdefinierter Typen nach einer bestimmten Variablen zu sortieren haben Sie zwei Möglichkeiten: die Standard-Bibliothekssortierung zu verwenden oder Ihre eigene Sortierfunktion zu implementieren.

Die Standard-Bibliothekssortierung verwenden

Die Standard-Bibliothekssortierung kann verwendet werden, wenn Sie Der benutzerdefinierte Typ implementiert den „Bool-Operator < (const Type& other) const“ und einen Kopierkonstruktor. Der Vergleichsoperator sollte eine sinnvolle Methode zum Vergleichen der Typen definieren. Hier ist ein Beispiel:

struct MyType {
    int a;
    int b;
    bool operator<(const MyType& other) const {
        // Compare types based on a specific variable (e.g., a)
        return a < other.a;
    }
};
Nach dem Login kopieren

Verwenden einer benutzerdefinierten Sortierfunktion

Alternativ können Sie stattdessen eine benutzerdefinierte Sortierfunktion oder einen Funktor als drittes Argument für sort() bereitstellen der Implementierung des Vergleichsoperators. Diese Funktion sollte die Typen basierend auf der gewünschten Variablen vergleichen. Zum Beispiel:

bool type_is_less(const MyType& t1, const MyType& t2) {
    return t1.a < t2.a;
}

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

Dieser Ansatz ist nützlich, wenn:

  • Sie können oder wollen den Vergleichsoperator nicht implementieren.
  • Sie müssen gebaut sortieren -in oder Zeigertypen, die nicht überladen werden können.
  • Sie möchten die Sequenz nach unterschiedlichen Kriterien zu unterschiedlichen Zeiten sortieren.

Das obige ist der detaillierte Inhalt vonWie sortiere ich einen Vektor benutzerdefinierter Typen nach bestimmten Variablen?. 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