Раньше у меня никогда не было необходимости создавать хеш-функции, но сейчас это кажется лучшим решением для этого.
Я ничего не пробовал, но, наверное, сначала я бы попытался хешировать целое число в Юникоде как наименее значимое 32-битное значение long. Затем в старшем значащем 32-разрядном виде сохраните целое число.
struct Symbol
{
private:
enum Type {
Terminal,
Variable,
}
union {
char m_term;
int m_var;
}
Type m_type;
public:
this(char term) {
m_type = Type.Terminal;
m_term = term;
}
this(int var) {
m_type = Type.Variable;
m_var = var;
}
}
Symbol
- это структура, которую я хотел бы хэшировать. Он содержит союз, который мы должны хешировать для достижения этой цели. Было просто интересно, если мой подход выше верен.