Heim > Backend-Entwicklung > C++ > So definieren Sie das `

So definieren Sie das `

Patricia Arquette
Freigeben: 2024-12-22 06:17:31
Original
888 Leute haben es durchsucht

How to Define the `

Operator „<“ definieren für strikte schwache Ordnung auf Tupeln

Damit ein n-Tupel die strikte schwache Ordnung erfüllt, muss es die folgenden Kriterien erfüllen:

  • Äquivalenz: Zwei Tupel x und y sind äquivalent, wenn weder x < y noch y < x gilt.
  • Asymmetrie: Wenn x < y, dann y < x kann nicht wahr sein.
  • Transitivität: Wenn x < y und y < z, dann x < z.

Während die Boost-Bibliothek eine vordefinierte Tupelklasse mit dem Operator „<“ bietet. Unter Einhaltung einer strikten schwachen Reihenfolge möchten Sie möglicherweise Ihren eigenen Operator für einen bestimmten Kontext definieren.

So können Sie den Operator „<“ implementieren. manuell:

struct S
{
     ThingA   a;
     ThingB   b;
};

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

In diesem Beispiel nutzen wir die Funktion std::make_tuple, um ein Tupel aus den einzelnen Elementen von S zu erstellen, ohne sie zu kopieren. Dann vergleichen wir die Tupel mit dem generischen Tupelvergleichsoperator.

Für den Operator „==“ können Sie einen ähnlichen Ansatz verfolgen:

bool operator==(S const& lhs, S const& rhs)
{
    return std::make_tuple(lhs.a, lhs.b) == std::make_tuple(rhs.a, rhs.b);
}
Nach dem Login kopieren

Bedenken Sie, dass diese Implementierungen davon ausgehen, dass ThingA und ThingB hat seinen eigenen Operator „<“ und Operator '==' für strikte schwache Reihenfolge definiert.

Das obige ist der detaillierte Inhalt vonSo definieren Sie das `. 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