Heim > Backend-Entwicklung > C++ > Hauptteil

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

Linda Hamilton
Freigeben: 2024-11-11 12:13:03
Original
732 Leute haben es durchsucht

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

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

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

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!

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