Namespaces
Variants

operator==,!= (std::unordered_set)

From cppreference.net

template < class Key, class Hash, class KeyEqual, class Alloc >

bool operator == ( const std:: unordered_set < Key, Hash, KeyEqual, Alloc > & lhs,

const std:: unordered_set < Key, Hash, KeyEqual, Alloc > & rhs ) ;
(1)
template < class Key, class Hash, class KeyEqual, class Alloc >

bool operator ! = ( const std:: unordered_set < Key, Hash, KeyEqual, Alloc > & lhs,

const std:: unordered_set < Key, Hash, KeyEqual, Alloc > & rhs ) ;
(2) (C++20 이전)

두 개의 비정렬 컨테이너 내용을 비교합니다.

두 개의 비정렬 컨테이너 lhs rhs 의 내용은 다음 조건들이 충족될 때 동일합니다:

  • lhs. size ( ) == rhs. size ( ) .
  • 각 동등 요소 그룹 [ lhs_eq1 , lhs_eq2 ) lhs. equal_range ( lhs_eq1 ) 으부터 얻어지며, 다른 컨테이너에서도 대응하는 동등 요소 그룹 [ rhs_eq1 , rhs_eq2 ) rhs. equal_range ( rhs_eq1 ) 으부터 얻어져 다음 속성들을 가집니다:

Key EqualityComparable 요구 사항을 만족하지 않을 경우 동작은 정의되지 않습니다.

다음의 경우 또한 동작이 정의되지 않습니다: hash_function() key_eq() (C++20 이전) key_eq() (C++20 이후) lhs rhs 에서 동일한 동작을 하지 않거나, Key 에 대한 operator == key_eq() 에 의해 도입된 동등 키 그룹 분할을 정제(refinement)하지 않는 경우 (즉, operator == 를 사용하여 비교 시 동일한 두 요소가 서로 다른 분할에 속하는 경우).

!= 연산자는 합성된 operator== 로부터 생성됩니다.

(C++20부터)

매개변수

lhs, rhs - 비교할 비정렬 컨테이너

반환값

1) true 컨테이너의 내용이 동일한 경우, false 그렇지 않은 경우.
2) true 컨테이너의 내용이 서로 다르면, false 그렇지 않으면.

복잡도

N 에 비례하는 횟수만큼 value_type 에 대한 operator == 호출, key_eq 가 반환하는 predicate 호출, 그리고 hash_function 가 반환하는 hasher 호출이 발생합니다. 평균적인 경우에는 N 에 비례하며, 최악의 경우에는 컨테이너 크기인 N 의 제곱에 비례합니다.