比較型の概要
注:Qtの 比較型は 、C++20標準の対応する型と同等の機能を提供します。これらが存在する唯一の理由は、C++17ビルドでもこの機能を利用できるようにするためです。 C++20ビルドでは、これらはstd 型との間で暗黙的に変換されるため、完全に互換性があります。したがって、プロジェクトですでにC++20を使用できる場合は、コード内でC++標準型を使用することを推奨します。Qtの比較型はQt 7で削除される予定です。
Qt XML には、3 項比較用の比較型がいくつか用意されており、これらは0 リテラルとの比較が可能です。これらの比較型を使用するには、<QtCompare> ヘッダーをインクルードする必要があります。これらの比較型は、要素の順序や順位を表す数学的概念である「順序」に基づいて分類されています。以下のカテゴリが用意されています:
| C++ 型 | Qt 型 | 厳密 | total | 例 |
|---|---|---|---|---|
| std::strong_ordering | Qt::strong_ordering | はい | はい | 整数型、大文字小文字を区別する文字列、QDate 、QTime |
| std::weak_ordering | Qt::weak_ordering | いいえ | はい | 大文字小文字を区別しない文字列、順序付けられていない連想コンテナ、QDateTime |
| std::partial_ordering | Qt::partial_ordering | いいえ | いいえ | 浮動小数点型、QOperatingSystemVersion 、QVariant |
最も強い比較型であるQt::strong_ordering は、厳密な全順序を表します。これは、任意の2つの要素が、等価性が置換可能性を意味するような方法で比較可能であることを要求します。言い換えれば、等価な値は互いに区別できません。 実用的な例としては、2つの文字列の大文字と小文字を区別する比較が挙げられます。例えば、"Qt" と"Qt" を比較した場合、結果はQt::strong_ordering::equal となります。両方の値は区別できず、これらの値に対して行われるすべての決定論的演算は同一の結果を返します。
Qt::weak_ordering は全順序を表します。任意の2つの値は依然として比較可能である必要がありますが、等価な値であっても区別可能な場合があります。ここでの典型的な例は、2つの文字列の大文字小文字を区別しない比較です。 例えば、"Qt" と"qt" を比較する場合、両者は同じ文字を含んでいますが、表現が異なります。この比較の結果はQt::weak_ordering::equivalent となりますが、実際にはEqual とはなりません。別の例として、QDateTime が挙げられます。これは、現地時間やUTCを含む任意のタイムゾーンで、特定の時点を表すことができます。time() や、場合によってはdate() が異なっても、異なる表現は等価です。
Qt::partial_ordering は、その名前が示す通り、部分順序を表します。これにより、2つの値が比較不可能である可能性があり、その結果、unordered 状態になることがあります。さらに、等価な値であっても区別される場合があります。実用的な例として、2つの浮動小数点値の比較が挙げられます。NaN(Not-a-Number)との比較では、順序付けられていない結果が得られます。 もう1つの例は、2つのQOperatingSystemVersion オブジェクトの比較です。AndroidとWindowsのような異なるオペレーティングシステムのバージョンを比較すると、順序付けられない結果が得られます。
これらの比較タイプを活用することで、関係の定義における表現力が向上します。さらに、これらはC++17における三項比較を実装するための基本的な構成要素となります。
Qt::strong_ordering 、Qt::weak_ordering 、およびQt::partial_orderingも参照してください 。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.