c++ - 如何在c ++中生成范围有限的字符串的哈希码?
问题描述
我的配置文件中有 100 个值。每个值由 2 个字符组成,可以是 90 或 AA 或 04 或 TR 或 FE
我想生成每个值的哈希码 - 并将它们存储在包含 100 个元素的数组中 - 并且配置中的每个值都将保存在数组中的哈希码索引中。
问题:
如何从 2 个字符创建哈希码,哈希码限制在 0 到 99 之间
解决方案
您在特定情况下需要的(将一组固定的 2 字节序列映射到连续数字)称为完美散列。
虽然您可以自己实现它,但有一个名为gperf的开源工具可以为您生成代码:
有用于生成 C 或 C++ 代码的选项,用于发出 switch 语句或嵌套 ifs 而不是哈希表,以及用于调整 gperf 使用的算法。
推荐阅读
- geometry - 可靠测量 3D 形状中的方向变化
- c++ - boost::multi_index 使用自定义键提取器语法问题?
- r - 图形所需的离散值,然后我无法从图例中删除 as.factor
- javascript - 未捕获的类型错误:无法读取 JavaScript 记忆游戏中未定义的属性“0”
- python - 遍历文本文件只打印第一行
- .net-core - Scaffold-dbcontext 不再生成 HasDefaultValueSql?
- c# - 将一个任务输入输出到另一个任务
- azure - 如何获取 AAD 个人资料图片 URL?
- javascript - TinyMCE 5.x - 在自定义下拉菜单中突出显示项目
- c# - 将 .Net Web 从 Windows 2008 移动到 Windows 2019 和 .Net 错误