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

来自cppreference.com
 
 
 
 
template< class Key, class T, class Hash, class KeyEqual, class Allocator >

bool operator==( const unordered_multimap<Key,T,Hash,KeyEqual,Allocator>& lhs,

                 const unordered_multimap<Key,T,Hash,KeyEqual,Allocator>& rhs );
(1)
template< class Key, class T, class Hash, class KeyEqual, class Allocator >

bool operator!=( const unordered_multimap<Key,T,Hash,KeyEqual,Allocator>& lhs,

                 const unordered_multimap<Key,T,Hash,KeyEqual,Allocator>& rhs );
(2)

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

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

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

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

若 Hash 和 KeyEqual 在 lhs 和 rhs 上拥有不相同的行为,或若 value_typeoperator== 不是到 KeyEqual 所引入的等价关键组中的细分(即若用 operator== 比较相等的二个元素落入不同划分),则行为未定义。

[编辑] 参数

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

[编辑] 返回值

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

[编辑] 复杂度

调用 value_type 上的 operator== 、调用 key_eq 所返回的谓词,及调用 hash_function 所返回的哈希器的次数,平均情况下与 ΣSi2 成比例,其中 S 是第 i 个等价关键组的大小。最坏情况下与 N2 成比例,其中 N 是容器大小。若每个等价关键组中元素以相同顺序排列(在容器互为副本时发生),则平均情况变为与 N 成比例。