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まで) |
2つの順序なしコンテナの内容を比較します。
2つの非順序コンテナ lhs と rhs の内容は、以下の条件が満たされる場合に等しいと見なされます:
- lhs. size ( ) == rhs. size ( ) であること。
-
等価な要素の各グループ
[lhs_eq1,lhs_eq2)( lhs. equal_range ( lhs_eq1 ) から取得)が、もう一方のコンテナ内に対応する等価要素のグループ[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
が
EqualityComparable
でない場合、動作は未定義です。
動作は未定義である。また、
hash_function()
と
key_eq()
が
(C++20まで)
key_eq()
が
(C++20以降)
lhs
と
rhs
で同じ動作をしない場合、または
Key
に対する
operator
==
が
key_eq()
によって導入される等価キーグループへの分割を洗練していない場合(つまり、
operator
==
を使用して等しいと比較される2つの要素が異なる分割に属する場合)。
|
|
(C++20以降) |
パラメータ
| lhs, rhs | - | 比較対象の非順序コンテナ |
戻り値
計算量
N
回の呼び出しに比例、
operator
==
の
value_type
に対する呼び出し、
key_eq
によって返される述語の呼び出し、および
hash_function
によって返されるハッシャーの呼び出し。平均的なケースでは
N
に比例し、最悪のケースでは
N
2
に比例します。ここで
N
はコンテナのサイズです。