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

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

如果 hash_function() key_eq() (C++20前) key_eq() (C++20起) lhs rhs 上的行为不一致,或者 Key operator == 未完善实现 key_eq() 所引入的等价键组划分(即,如果两个通过 operator == 比较相等的元素被划分到不同分区),则行为未定义。

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

(since C++20)

参数

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

返回值

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

复杂度

与对 value_type operator == 调用次数、由 key_eq 返回的谓词调用次数以及由 hash_function 返回的哈希函数调用次数成正比,平均情况下为线性关系,最坏情况下与容器大小 N 的平方 N 2 成正比。