operator==,!= (std::unordered_set)
|
template
<
class
Key,
class
Hash,
class
KeyEqual,
class
Alloc
>
bool
operator
==
(
const
std::
unordered_set
<
Key, Hash, KeyEqual, Alloc
>
&
lhs,
|
(1) | |
|
template
<
class
Key,
class
Hash,
class
KeyEqual,
class
Alloc
>
bool
operator
!
=
(
const
std::
unordered_set
<
Key, 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
不满足
可相等比较
要求,则行为未定义。
如果
hash_function()
和
key_eq()
(C++20前)
key_eq()
(C++20起)
在
lhs
和
rhs
上的行为不一致,或者
Key
的
operator
==
未完善实现
key_eq()
所引入的等价键组划分(即,如果两个通过
operator
==
比较相等的元素被划分到不同分区),则行为未定义。
|
|
(since C++20) |
参数
| lhs, rhs | - | 待比较的无序容器 |
返回值
复杂度
与对
value_type
的
operator
==
调用次数、由
key_eq
返回的谓词调用次数以及由
hash_function
返回的哈希函数调用次数成正比,平均情况下为线性关系,最坏情况下与容器大小
N
的平方
N
2
成正比。