Heim >Backend-Entwicklung >C++ >Kann die Sortierfunktion der Standardbibliothek benutzerdefinierte Typen basierend auf bestimmten Feldern sortieren?

Kann die Sortierfunktion der Standardbibliothek benutzerdefinierte Typen basierend auf bestimmten Feldern sortieren?

Linda Hamilton
Linda HamiltonOriginal
2024-11-11 12:13:03837Durchsuche

Can the Standard Library Sort Function Sort User-Defined Types Based on Specific Fields?

Sortieren benutzerdefinierter Typen mit der Standardbibliothekssortierung

Frage:

Kann der Standard Die Sortierfunktion der Bibliothek kann verwendet werden, um einen Vektor benutzerdefinierter Strukturen basierend auf einem bestimmten Feld innerhalb der zu sortieren Strukturen?

Beispiel:

struct MyType {
    int a;
    int b;
};

vector<MyType> moo;

// Insert data into moo...

// Sort moo by the value of the 'a' field

Antwort:

Ja, die Standard-Bibliothekssortierfunktion kann dieses Szenario bewältigen wenn der benutzerdefinierte Typ bestimmte Anforderungen erfüllt:

  1. Vergleichsoperator Überladung: Der Typ muss den überladenen Vergleichsoperator bool Operator<(const MyType& other) const implementieren, um anzugeben, wie Instanzen des Typs verglichen werden.
  2. Kopierkonstruktor: Eine Kopie Konstruktor (entweder vom Compiler generiert oder benutzerdefiniert) muss existieren.

Implementierung:

struct MyType {
    int a;
    int b;

    bool operator<(const MyType&amp; other) const {
        // Implementation that compares the 'a' fields
    }

    // Copy constructor
    MyType(const MyType&amp; other)
        : a(other.a), b(other.b) { }

    // Other constructors...
};

Alternativer Ansatz unter Verwendung einer Ordnungsfunktion:

Bei Überlastung der Wenn ein Vergleichsoperator nicht möglich ist, kann stattdessen eine Ordnungsfunktion oder ein Funktor als drittes Argument für die Sortierung verwendet werden Funktion.

bool type_is_less(const MyType&amp; t1, const MyType&amp; t2) {
    // Comparison logic
}

std::sort(c.begin(), c.end(), type_is_less);

Dieser Ansatz kann in Fällen von Vorteil sein, in denen:

  • Eine Überladung des Vergleichsoperators ist nicht erwünscht.
  • Eingebaute oder Zeigertypen erforderlich sortiert werden sollen.
  • Mehrere Sortierkriterien sind erforderlich.

Das obige ist der detaillierte Inhalt vonKann die Sortierfunktion der Standardbibliothek benutzerdefinierte Typen basierend auf bestimmten Feldern 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