Namespaces
Variants

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

From cppreference.net

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

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

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

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

const std:: unordered_map < Key, T, Hash, KeyEqual, Alloc > & rhs ) ;
(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 ) から取得される場合、以下の特性を持つ:

Key または T EqualityComparable でない場合、動作は未定義です。

動作は未定義である。また、 hash_function() key_eq() (C++20まで) key_eq() (C++20以降) lhs rhs で同じ動作をしない場合、または Key に対する operator == key_eq() によって導入される等価キーグループへの分割を改良していない場合(つまり、 operator == を使用して等しいと比較される2つの要素が異なる分割に属する場合)。

!= 演算子は operator== から合成されます

(C++20以降)

パラメータ

lhs, rhs - 比較対象の非順序コンテナ

戻り値

1) true コンテナの内容が等しい場合、 false それ以外の場合。
2) true コンテナの内容が等しくない場合、 false それ以外の場合。

計算量

N 回の operator == の呼び出し、 value_type に対する述語の呼び出し、 key_eq が返す述語の呼び出し、および hash_function が返すハッシャーの呼び出しに比例します。平均的なケースでは N に比例し、最悪のケースでは N 2 に比例します。ここで N はコンテナのサイズです。