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

来自cppreference.com

 
 
容器库
序列
(C++11)
关联
无序关联
适配器
视图
(C++20)
 
 
template< class Key, class Hash, class KeyEqual, class Allocator >

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

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

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

                 const std::unordered_set<Key,Hash,KeyEqual,Allocator>& rhs );
(2) (C++20 前)

比较二个无序容器的内容。

若下列条件成立则二个无序容器 lhsrhs 相等:

  • lhs.size() == rhs.size()
  • lhs.equal_range(lhs_eq1) 获得的每组等价元素 [lhs_eq1, lhs_eq2) 拥有在另一容器中从 rhs.equal_range(rhs_eq1) 获得的对应等价元素组 [rhs_eq1, rhs_eq2) ,且它们拥有下列属性:

Key可相等比较 (EqualityComparable) 则行为未定义。

hash_function()key_eq() (C++20 前)key_eq() (C++20 起)lhsrhs 上拥有不相同的行为,或若 Keyoperator== 不是对于 key_eq() 所引入的等价关键组的细分(即若用 operator== 比较相等的二个元素落入不同划分),则行为未定义。

!= 运算符从 operator== 合成

(C++20 起)

参数

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

返回值

1) 若容器内容相等则为 true ,否则为 false
2) 若容器内容不相等则为 true ,否则为 false

复杂度

调用 value_type 上的 operator== 、调用 key_eq 所返回的谓词,及调用 hash_function 所返回的哈希器的次数,平均情况下与 N 成正比,最坏情况下与 N2 成正比,其中 N 是容器大小。