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:
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!