Namespaces
Variants

operator==,<=> (std::inplace_vector)

From cppreference.net
constexpr friend bool operator == ( const std:: inplace_vector < T, N > & lhs,
const std:: inplace_vector < T, N > & rhs ) ;
(1) (C++26以降)
constexpr friend synth - three - way - result < T >

operator <=> ( const std:: inplace_vector < T, N > & lhs,

const std:: inplace_vector < T, N > & rhs ) ;
(2) (C++26以降)

2つの std::inplace_vector の内容を比較します。

1) lhs rhs の内容が等しいかどうかをチェックします。つまり、同じ数の要素を持ち、 lhs の各要素が rhs の同じ位置にある要素と等しいかどうかを比較します。
2) 内容を辞書順で比較します。比較は以下のように呼び出すことで実行されます:
std:: lexicographical_compare_three_way ( lhs. begin ( ) , lhs. end ( ) ,
rhs. begin ( ) , rhs. end ( ) , synth - three - way ) ;
戻り値の型は synth-three-way の戻り値の型(すなわち、 synth-three-way-result  < T > )です。
以下の条件の少なくとも1つを満たさなければならない:
  • T three_way_comparable をモデル化していること。
  • < が型(const修飾されている可能性もある) T の値に対して定義されており、かつ < が全順序関係であること。
そうでない場合、動作は未定義である。

< <= > >= 、および != 演算子は、それぞれ 合成されます operator <=> および operator == から。

目次

変更点: - 「Contents」を「目次」に翻訳 - HTMLタグ、属性、リンク先、番号はそのまま保持 - C++関連の用語(Parameters、Return value、Complexity、Notes、Example)は原文のまま維持 - 書式と構造は完全に保持

パラメータ

lhs, rhs - std::inplace_vector の比較対象となる内容
-
T はオーバーロード(1)を使用するために EqualityComparable の要件を満たさなければならない

戻り値

1) true std::inplace_vector の内容が等しい場合、 false がそれ以外の場合。
2) 等価でない最初の要素ペアの相対的な順序(そのような要素が存在する場合)、 lhs rhs において、 lhs. size ( ) <=> rhs. size ( ) それ以外の場合。

計算量

1) サイズが異なる場合は定数時間、それ以外の場合は std::inplace_vector のサイズに対して線形時間。
2) std::inplace_vector のサイズに対して線形。

注記

関係演算子は synth-three-way によって定義され、可能な場合は operator <=> を、そうでない場合は operator < を使用します。

特に、要素自体が operator <=> を提供していないが、三方比較可能な型への暗黙変換が可能な場合、その変換が operator < の代わりに使用されます。

#include <inplace_vector>
int main()
{
    constexpr std::inplace_vector<int, 4>
        a{1, 2, 3},
        b{1, 2, 3},
        c{7, 8, 9, 10};
    static_assert
    (""
        "等しいコンテナの比較:" &&
        (a != b) == false &&
        (a == b) == true &&
        (a < b) == false &&
        (a <= b) == true &&
        (a > b) == false &&
        (a >= b) == true &&
        (a <=> b) >= 0 &&
        (a <=> b) <= 0 &&
        (a <=> b) == 0 &&
        "等しくないコンテナの比較:" &&
        (a != c) == true &&
        (a == c) == false &&
        (a < c) == true &&
        (a <= c) == true &&
        (a > c) == false &&
        (a >= c) == false &&
        (a <=> c) < 0 &&
        (a <=> c) != 0 &&
        (a <=> c) <= 0 &&
    "");
}