Namespaces
Variants

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

From cppreference.net

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

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

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

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

const std:: unordered_map < Key, T, 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 또는 T 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 에 비례하는 횟수만큼 operator == value_type 에 대해 호출하고, key_eq 가 반환하는 predicate를 호출하며, hash_function 가 반환하는 hasher를 호출합니다. 평균적인 경우에는 이 작업들이 수행되며, 최악의 경우에는 컨테이너의 크기인 N 의 제곱인 N 2 에 비례합니다.