ホームページ > バックエンド開発 > C++ > 厳密な弱い順序付けを実装する方法 `

厳密な弱い順序付けを実装する方法 `

Linda Hamilton
リリース: 2024-12-24 01:47:12
オリジナル
957 人が閲覧しました

How to Implement a Strict Weak Ordering `

演算子の定義方法<厳密な弱い順序付けのための n タプルについて

はじめに

厳密な弱い順序付けは、2 つのオブジェクト間の関係を定義する数学的概念です。これは、オブジェクト x と y が等しい場合、f(x, y) と f(y, x) の両方が false であることを指定します。 a が b より小さい場合、f(a, b) は true、f(b, a) は false になります。

n タプルの定義

n タプルの場合、演算子

  • 等価性: すべてのコンポーネントが等しい場合、2 つの n タプルは等価です。
  • Less Than: a のいずれかの成分が以下の場合、n タプル a は別の n タプル b より小さいです。 b の対応するコンポーネント。

実装

上記の定義は、次の手順を使用して C で実装できます。

  1. 条件に従って、同等の場合は false を返し、未満の場合は true を返す比較関数を作成します。
  2. < の演算子のオーバーロードを提供します。比較関数を使用する演算子。

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート