Namespaces
Variants

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

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부터)

두 std::inplace_vector의 내용을 비교합니다.

1) lhs와 rhs의 내용이 같은지 확인합니다. 즉, 요소 개수가 같고 lhs의 각 요소가 같은 위치에 있는 rhs의 요소와 같음으로 비교됩니다.
2) lhs와 rhs의 내용을 사전식으로 비교합니다. 비교는 다음을 호출하는 것처럼 수행됩니다.
std::lexicographical_compare_three_way(lhs.begin(), lhs.end(),
                                       rhs.begin(), rhs.end(), /*synth-three-way*/);
반환 형식은 synth-three-way의 반환 형식입니다. (즉, synth-three-way-result <T>).
다음 조건 중 하나 이상이 충족되어야 합니다.
  • T가 three_way_comparable을 모델링합니다.
  • <가 (const로 한정될 수 있는) T 형식의 값에 대해 정의되고, <은 전체 순서 관계입니다.
   그렇지 않으면 동작이 정의되지 않습니다.

<, <=, >, >= 및 != 연산자는 각각 과 으로부터operator<=> 합성operator==됩니다.

매개변수

lhs, rhs - std::inplace_vector 비교할 내용을 가진 s
-
T 는 (1)번 오버로드를 사용하기 위해 EqualityComparable 요구 사항을 충족해야 합니다.

반환값

1) true 만약 std::inplace_vector s의 내용이 동일하다면, false 그렇지 않다면.
2) 그러한 요소가 존재하는 경우 lhs 와 rhs 의 첫 번째 비동등 요소 쌍의 상대적 순서, 그렇지 않은 경우 lhs. size ( ) <=> rhs. size ( ) 입니다.

복잡도

1) 크기가 다르면 상수 시간, 그렇지 않으면 lhs 와 rhs 의 크기에 선형 시간이 소요됩니다.
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
    (""
        "Compare equal containers:" &&
        (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 &&

        "Compare non equal containers:" &&
        (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 &&
    "");
}