Вы можете создать хеш-таблицу с boost::unordered_map
, std::tr1::unordered_map
или (на компиляторах C ++ 0x) std::unordered_map
.Это требует почти нулевого усилия. Google sparsehash может быть еще быстрее и имеет тенденцию занимать меньше памяти.(Удаление может быть проблемой, но, похоже, вам это не понадобится.)
Если код все еще недостаточно быстр, вы можете использовать предварительные знания о ключах с минимальным идеальным хэшем, как предлагаетдругие, чтобы получить гарантированную производительность O (1).Стоит ли усилий по генерированию кода, это зависит от вас;помещение 500k ключей в такой инструмент, как gperf
, может потребовать генератора генератора кода.
Вы также можете посмотреть на CMPH , который генерирует идеальную хеш-функцию во время выполнения, хотячерез C API.