我需要计算很多不同的东西.我正在处理一对对象列表,例如:
A34223,34
B23423,-23
23423212,16
Run Code Online (Sandbox Code Playgroud)
我打算做的是将第一个值(键)散列为32位整数,这将是稀疏结构的关键,其中"值"将被添加(所有从零开始)数字并且为负数.
鉴于它们的密钥是短的和字母数字的,有没有办法生成在32位x86架构上快速的哈希算法?或者是否存在合适的哈希?
我对哈希的设计一无所知,但是希望由于简单的输入,有一种方法可以生成高性能哈希,保证给定密钥长度"X"不会发生冲突,并且具有高分散性因此,当长度超过"X"时,最小化碰撞.
小智 8
当您使用C++时,您应该做的第一件事是使用std :: map创建一个简单的implimentation.它足够快(可能会)?如果是这样,请坚持下去,否则请调查您的C++实现是否提供了哈希表.如果是这样,使用它来创建一个简单的实现,测试,计时.它足够快(几乎肯定是)?
只有在您完成这些选项之后,才应考虑实现自己的哈希表和散列函数.