Heim >Backend-Entwicklung >C++ >Wie sortiere ich einen Vektor benutzerdefinierter Typen nach bestimmten Variablen?

Wie sortiere ich einen Vektor benutzerdefinierter Typen nach bestimmten Variablen?

Susan Sarandon
Susan SarandonOriginal
2024-11-15 01:36:02263Durchsuche

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;
    }
};

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);

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!

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