Heim > Backend-Entwicklung > C++ > So implementieren Sie eine strikte schwache Reihenfolge

So implementieren Sie eine strikte schwache Reihenfolge

Linda Hamilton
Freigeben: 2024-12-24 01:47:12
Original
943 Leute haben es durchsucht

How to Implement a Strict Weak Ordering `

So definieren Sie den Operator< auf einem n-Tupel für Strict Weak Ordering

Einführung

Strict Weak Ordering ist ein mathematisches Konzept, das eine Beziehung zwischen zwei Objekten definiert. Es gibt an, dass sowohl f(x, y) als auch f(y, x) falsch sind, wenn die Objekte x und y äquivalent sind; und wenn a kleiner als b ist, dann ist f(a, b) wahr und f(b, a) falsch.

Definition für n-Tupel

Für ein n-Tupel ist der Operator< kann so definiert werden, dass sie eine strikte schwache Ordnung erfüllt, indem die folgenden Bedingungen befolgt werden:

  • Äquivalenz: Zwei n-Tupel sind äquivalent, wenn sie in allen ihren Komponenten gleich sind.
  • Kleiner als: Ein n-Tupel a ist kleiner als ein anderes n-Tupel b, wenn eine Komponente von a kleiner als die entsprechende ist Komponente von b.

Implementierung

Die obige Definition kann in C mit den folgenden Schritten implementiert werden:

  1. Erstellen Sie a Vergleichsfunktion, die gemäß den oben genannten Bedingungen „false“ für Äquivalenz und „true“ für weniger als zurückgibt.
  2. Stellen Sie eine Operatorüberladung für bereit < Operator unter Verwendung der Vergleichsfunktion.

Beispiel

Für ein 3-Tupel ist der Operator< kann wie folgt definiert werden:

struct Triple {
    int x;
    int y;
    int z;
    bool operator<(const Triple& other) const {
        return (x < other.x) || (y < other.y) || (z < other.z);
    }
};
Nach dem Login kopieren

Nach dieser Definition wären zwei Tripel äquivalent, wenn sie identische Werte für x, y und z hätten. Ein Tripel würde als kleiner als ein anderes betrachtet, wenn eine seiner Komponenten kleiner als die des anderen Tripels ist.

std::tuple

Alternativ kann std:: Die von der C-Standardbibliothek bereitgestellte Tupelklasse implementiert bereits eine strikte schwache Reihenfolge für Tupel. Um dies zu nutzen, können Tupel verwendet werden, ohne die darin enthaltenen Objekte zu kopieren.

struct S {
    int a;
    int b;
};
bool operator<(const S& lhs, const S& rhs) {
    return std::tie(lhs.a, lhs.b) < std::tie(rhs.a, rhs.b);
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSo implementieren Sie eine strikte schwache Reihenfolge. 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