名前空間
変種
操作

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

From cppreference.com
 
 
 
 
template< class Key, class Hash, class KeyEqual, class Alloc >

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

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

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

                 const std::unordered_set<Key, Hash, KeyEqual, Alloc>& rhs );
(2) (C++20まで)

2つの順序なしコンテナの内容を比較します。

2つの順序なしコンテナ lhsrhs の内容は、次の条件が満たされる場合に等しいとみなされます。

  • lhs.size() == rhs.size().
  • lhs.equal_range(lhs_eq1) から得られる同値な要素の各グループ [lhs_eq1lhs_eq2) には、もう一方のコンテナにおける、rhs.equal_range(rhs_eq1) から得られる対応する同値な要素のグループ [rhs_eq1rhs_eq2) が存在し、以下のプロパティを持ちます。

KeyEqualityComparableでない場合、動作は未定義です。

hash_function()key_eq()(C++20まで)key_eq()(C++20以降) lhsrhs で同じ動作をしない場合、または Key に対する operator==key_eq() によって導入された同値キーグループへの分割の洗練でない場合(つまり、operator== を使用して比較して等しい要素が異なるパーティションに属する場合)、動作は未定義です。

!= 演算子は operator== から合成される。

(C++20以降)

[編集] パラメータ

lhs, rhs - 比較する順序なしコンテナ

[編集] 戻り値

1) コンテナの内容が等しい場合は true、そうでない場合は false
2) コンテナの内容が等しくない場合は true、そうでない場合は false

[編集] 計算量

平均ケースでは、コンテナのサイズをNとすると、value_typeに対するoperator==の呼び出し、key_eqが返す述語の呼び出し、およびhash_functionが返すハッシュ関数の呼び出しに比例します。最悪ケースではN2に比例します。

English 日本語 中文(简体) 中文(繁體)