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

So definieren Sie das `

Patricia Arquette
Patricia ArquetteOriginal
2024-12-22 06:17:31917Durchsuche

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

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

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!

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