-1
For example if i have to store many entries like in C
hash["1"]="11"
hash["2"]="12"
hash["11"]="21"

条件是:你只寻找连续的相同数字,所以只保留那些在地图上。

就像这些用于解决问题的许多条目一样。我们可以使用一些技术,例如添加 ASCII 值的总和来查找索引,然后使用一些 mod 函数。

但是这种方法并不能保证不会发生碰撞,即使发生了一次碰撞,整个问题也会出错。

这可以在 C++ 中轻松完成吗?

请提供一些建议/提示。提前致谢

4

1 回答 1

2

关于散列函数:没有散列函数可以保证不会发生冲突。他们只能尽量减少典型工作负载中发生冲突的机会。一种经常使用的散列函数是伯恩斯坦散列函数。您可以在此处找到不同字符串哈希函数(包括 bernstein)的比较

在 C++ 中,您可以简单地使用标准map(参见此处)模板,该模板不使用哈希映射,但通常使用红黑树实现。C++11 标准有一个unordered_map(参见此处),它是使用散列函数实现的。

于 2012-05-28T17:56:55.933 回答