A general approach is to:
- Serialise the data into a stream of bytes.
- Create a
std::string_view
of the resulting byte buffer and use its hash
Efficient solution for the step 1. can be tricky to implement since C++ doesn't have standard way to serialise data. A trivial but non-optimal solution is to simply convert to a textual string in which case we don't need a string view either.
In your example, you could use:
std::string data = name + std::to_string(phone);
std::size_t hash = std::hash<std::string>{}(data);
By defining a general hash function, you could stream the bytes of individual objects separately without storing them first in a contiguous buffer.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…