operator==,!= (std::unordered_multimap)
|
template
<
class
Key,
class
T,
class
Hash,
class
KeyEqual,
class
Alloc
>
bool
operator
==
(
const
std::
unordered_multimap
<
Key, T, Hash, KeyEqual, Alloc
>
&
lhs,
|
(1) | |
|
template
<
class
Key,
class
T,
class
Hash,
class
KeyEqual,
class
Alloc
>
bool
operator
!
=
(
const
std::
unordered_multimap
<
Key, T, Hash, KeyEqual, Alloc
>
&
lhs,
|
(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 ) 获取),且满足以下特性:
-
- std:: distance ( lhs_eq1, lhs_eq2 ) == std:: distance ( rhs_eq1, rhs_eq2 ) 。
- std:: is_permutation ( lhs_eq1, lhs_eq2, rhs_eq1 ) == true 。
若
Key
或
T
不满足
可相等比较
要求,则行为未定义。
如果
hash_function()
和
key_eq()
(C++20前)
key_eq()
(C++20起)
在
lhs
和
rhs
上的行为不一致,或者
Key
的
operator
==
未细化
key_eq()
引入的等价键组划分(即,如果使用
operator
==
比较相等的两个元素落入不同分区),则行为未定义。
|
|
(since C++20) |
参数
| lhs, rhs | - | 待比较的无序容器 |
返回值
复杂度
与平均情况下对
value_type
的
ΣS
i
2
次
operator
==
调用、对
key_eq
返回的谓词调用,以及对
hash_function
返回的哈希器调用成正比,其中
S
是第
i
个等价键组的大小。最坏情况下与
N
2
成正比,其中
N
是容器的大小。如果每个等价键组内的元素按相同顺序排列(当容器互为副本时会发生),则平均情况变为与
N
成正比。