The full declaration of unordered_map
looks like so:
template <
class Key,
class T,
class Hash = std::hash<Key>,
class KeyEqual = std::equal_to<Key>,
class Allocator = std::allocator<std::pair<Key const, T>>
> class unordered_map;
Observe that it requires both a hash function and an equality comparer for the key type.
When searching for the element with a particular key, the container will first find the correct bucket using the hash function, then will walk the elements in that bucket, comparing the key of each element using the equality comparer.