Now that we have the hash function we create a class for pre-hashed strings. It consists of the following:
- A constructor which takes raw string as parameter and calculates the hash at construction.
- Comparison operators.
- A get_hash() member function which returns the hash.
- An overload of std::hash() which simply returns the hash value. This overload is used by std::unordered_map, std::unordered_set or any other STL class which uses hash values. To put it simply, this makes the STL container aware that it exists a hash function for the PrehashedString.
Here is a basic implementation of a PrehashedString class:
class PrehashedString { public: template <size_t N> constexpr PrehashedString(const char(&str)[N]) ...