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

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
    (""
        "동일한 컨테이너 비교:" &&
        (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 &&
    "");
}