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

From cppreference.com

template< class Key, class Hash, class KeyEqual, class Allocator >

bool operator==( const unordered_set<Key,Hash,KeyEqual,Allocator>& lhs,

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

bool operator!=( const unordered_set<Key,Hash,KeyEqual,Allocator>& lhs,

                 const unordered_set<Key,Hash,KeyEqual,Allocator>& rhs );
(2)

Compares the contents of two unordered containers.

The contents of two unordered containers lhs and rhs are equal if the following conditions hold:

  • lhs.size() == rhs.size()
  • each group of equivalent keys [lhs_eq1, lhs_eq2) obtained from lhs.equal_range(lhs_eq1) has a corresponding group of equivalent keys in the other container [rhs_eq1, rhs_eq2) obtained from rhs.equal_range(rhs_eq1), that has the following properties:

The behavior is undefined if Key is not EqualityComparable.

The behavior is also undefined if Hash and KeyEqual do not have the same behavior on lhs and rhs or if the equality comparison operator for Key is not a refinement of the partition into equivalent-key groups introduced by KeyEqual (that is, if two keys that compare equal fall into different partitions)

[edit] Parameters

lhs, rhs - unordered containers to compare

[edit] Return value

1) true if the contents of the containers are equal, false otherwise
2) true if the contents of the containers are not equal, false otherwise

[edit] Complexity

N comparisons of the keys in the average case, N2 in the worst case, where N is the size of the container.