std::strict_weak_order
From cppreference.com
| ヘッダ <concepts> で定義 |
||
| template< class R, class T, class U > concept strict_weak_order = std::relation<R, T, U>; |
(C++20以降) | |
concept strict_weak_order<R, T, U> は、relation R がその引数に対して順序の厳密弱順序(strict weak ordering)を課すことを指定します。
目次 |
[編集] 意味的要件
関係 r が順序の厳密弱順序であるとは、以下の条件を満たす場合を指します。
- 反射律をみたさない (irreflexive): すべての x について、r(x, x) は false である。
- 推移律をみたさない (transitive): すべての a, b, c について、もし r(a, b) と r(b, c) が両方とも true ならば、r(a, c) は true である。
- !r(a, b) && !r(b, a) を e(a, b) と定義すると、e は推移律をみたさない (e is transitive): e(a, b) && e(b, c) は e(a, c) を意味する。
これらの条件の下で、e は同値関係であり、r は e によって決定される同値類に対して順序の厳密全順序(strict total ordering)を誘導することが示されます。
[編集] 注記
relation と strict_weak_order の違いは、純粋に意味的なものです。
[編集] 参考文献
- C++23標準 (ISO/IEC 14882:2024)
- 18.7.7 Concept
strict_weak_order[concept.strictweakorder]
- 18.7.7 Concept
- C++20 standard (ISO/IEC 14882:2020)
- 18.7.7 Concept
strict_weak_order[concept.strictweakorder]
- 18.7.7 Concept