operator==,!=(std::unordered_map)
提供: cppreference.com
template< class Key, class T, class Hash, class KeyEqual, class Allocator > bool operator==( const std::unordered_map<Key,T,Hash,KeyEqual,Allocator>& lhs, const std::unordered_map<Key,T,Hash,KeyEqual,Allocator>& rhs ); |
(1) | |
template< class Key, class T, class Hash, class KeyEqual, class Allocator > bool operator!=( const std::unordered_map<Key,T,Hash,KeyEqual,Allocator>& lhs, const std::unordered_map<Key,T,Hash,KeyEqual,Allocator>& rhs ); |
(2) | (C++20未満) |
2つの非順序コンテナの内容を比較します。
2つの非順序コンテナ lhs および rhs の内容は、以下の条件が満たされる場合に等しくなります。
lhs.size() == rhs.size()。lhs.equal_range(lhs_eq1)から取得された同等な要素の各グループ[lhs_eq1, lhs_eq2)が他方のコンテナのrhs.equal_range(rhs_eq1)から取得した同等な要素の対応するグループ[rhs_eq1, rhs_eq2)を持ち、これらが以下の性質を持つ。
std::distance(lhs_eq1, lhs_eq2) == std::distance(rhs_eq1, rhs_eq2)。std::is_permutation(lhs_eq1, lhs_eq2, rhs_eq1) == true。
Key または T が EqualityComparable でなければ、動作は未定義です。
また、hash_function および (C++20未満) key_eq() が lhs および rhs に対して同じ動作をしない場合、または Key に対する operator== が key_eq() によって導入される等しいキーのグループへの分割の改良でない (つまり operator== を使用して等しいと比較される2つの要素が異なるグループに分割される場合)、動作は未定義です。
引数
| lhs, rhs | - | 比較する非順序コンテナ |
戻り値
1) コンテナの内容が等しければ
true、そうでなければ false。2) コンテナの内容が等しくなければ
true、そうでなければ false。計算量
平均的なケースでは N、ワーストケースでは N2 に比例する回数の value_type に対する operator== の呼び出し、 key_eq によって返される述語の呼び出し、および hash_function によって返されるハッシュ関数の呼び出し。 ただし N はコンテナのサイズです。