タグ付けされた質問 「strict-weak-ordering」

4
「タプル」と「タイ」を介して比較演算子を実装することは良い考えですか?
(注:tupleおよびtieBoostまたはC ++ 11から取得できます。)厳密な弱い順序付けのように、すべての重要なものがそのデータ型に対してすでに行われているため 、2つの要素のみを含む小さな構造体を書き込むときstd::pair、operator<。 ただし、欠点は、ほとんど役に立たない変数名です。私がそれを作成したtypedefとしても、特に両方が同じタイプである場合は特に、2日後に何が何firstであったかsecond正確には覚えていません。これは、3つ以上のメンバーの場合はさらに悪化します。これは、入れ子にするpairことでほとんど問題になります。 そのための他のオプションはtuple、BoostまたはC ++ 11のいずれかからですが、実際には見た目が良く、明確ではありません。そこで、必要な比較演算子を含め、自分で構造体を書くことに戻ります。 特にはoperator<非常に扱いにくい場合があるので、次のように定義された操作に依存するだけで、この混乱全体を回避することを考えましたtuple。 の例operator<、例えば厳密な弱い順序付け: bool operator<(MyStruct const& lhs, MyStruct const& rhs){ return std::tie(lhs.one_member, lhs.another, lhs.yet_more) < std::tie(rhs.one_member, rhs.another, rhs.yet_more); } (tieは、渡された引数からtupleのT&参照を作成します。) 編集:@DeadMGからプライベートに継承するという提案tupleは悪いことではありませんが、かなりの欠点がありました。 事業者が独立している場合(おそらく友人)、私は公に継承する必要があります キャストを使用すると、関数/演算子(operator=特に)を簡単にバイパスできます tie解決策により、注文に関係のない特定のメンバーを除外することができます この実装に考慮する必要がある欠点はありますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.