首页 > 解决方案 > 如何在c ++中生成范围有限的字符串的哈希码?

问题描述

我的配置文件中有 100 个值。每个值由 2 个字符组成,可以是 90 或 AA 或 04 或 TR 或 FE

我想生成每个值的哈希码 - 并将它们存储在包含 100 个元素的数组中 - 并且配置中的每个值都将保存在数组中的哈希码索引中。

问题:

如何从 2 个字符创建哈希码,哈希码限制在 0 到 99 之间

标签: c++c++11visual-c++c++14

解决方案


您在特定情况下需要的(将一组固定的 2 字节序列映射到连续数字)称为完美散列

虽然您可以自己实现它,但有一个名为gperf的开源工具可以为您生成代码:

有用于生成 C 或 C++ 代码的选项,用于发出 switch 语句或嵌套 ifs 而不是哈希表,以及用于调整 gperf 使用的算法。


推荐阅读