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. equal_range ( lhs_eq1 ) 获取的每组等价元素 [ lhs_eq1 , lhs_eq2 ) ,在另一个容器中都存在对应的等价元素组 [ rhs_eq1 , rhs_eq2 ) (通过 rhs. equal_range ( rhs_eq1 ) 获取),且满足以下特性:

Key T 不满足 可相等比较 要求,则行为未定义。

如果 hash_function() key_eq() (C++20前) key_eq() (C++20起) lhs rhs 上的行为不一致,或者 Key operator == 未细化 key_eq() 引入的等价键组划分(即,如果使用 operator == 比较相等的两个元素落入不同分区),则行为未定义。

!= 运算符由 operator== 合成生成

(C++20 起)

参数

lhs, rhs - 待比较的无序容器

返回值

1) true 若容器内容相等, false 否则。
2) true 如果容器内容不相等, false 否则。

复杂度

与对 value_type 进行 N operator == 调用、对 key_eq 返回的谓词调用,以及对 hash_function 返回的哈希器调用成正比,在平均情况下与 N 成正比,在最坏情况下与 N 2 成正比,其中 N 是容器的大小。