Namespaces
Variants

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

From cppreference.net

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

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

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

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

const std:: unordered_multimap < 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== 合成

(since C++20)

参数

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

返回值

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

复杂度

与平均情况下对 value_type ΣS i 2 operator == 调用、对 key_eq 返回的谓词调用,以及对 hash_function 返回的哈希器调用成正比,其中 S 是第 i 个等价键组的大小。最坏情况下与 N 2 成正比,其中 N 是容器的大小。如果每个等价键组内的元素按相同顺序排列(当容器互为副本时会发生),则平均情况变为与 N 成正比。