演算子の定義方法<厳密な弱い順序付けのための n タプルについて
はじめに
厳密な弱い順序付けは、2 つのオブジェクト間の関係を定義する数学的概念です。これは、オブジェクト x と y が等しい場合、f(x, y) と f(y, x) の両方が false であることを指定します。 a が b より小さい場合、f(a, b) は true、f(b, a) は false になります。
n タプルの定義
n タプルの場合、演算子
実装
上記の定義は、次の手順を使用して C で実装できます。
例
3 タプルの場合、演算子<
struct Triple { int x; int y; int z; bool operator<(const Triple& other) const { return (x < other.x) || (y < other.y) || (z < other.z); } };
この定義を使用すると、x、y、z の値が同じである場合、2 つのトリプルは同等になります。いずれかのコンポーネントが他のトリプルのコンポーネントより小さい場合、トリプルは別のトリプルより小さいとみなされます。
std::tuple
あるいは、std:: C 標準ライブラリによって提供されるタプル クラスは、タプルに対する厳密な弱い順序付けをすでに実装しています。これを利用するために、タプルに含まれるオブジェクトをコピーせずにタプルを使用できます。
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); }
以上が厳密な弱い順序付けを実装する方法 `の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。