c++ - 在 unordered_map 中使用浮点数作为键的好方法
问题描述
在我的场景中,如果两个浮点数(比如double
s)的绝对差在一定范围内,则它们被认为是相等的。这意味着很容易将double
s 用作 a 的键std::map
:我只需要定义一个自定义比较函数。但我不确定什么是好的方法std::unordered_map
,除了比较函数之外,它还需要一个哈希函数。
我认为一般来说没有任何方法可以为两个 close double
s 生成相同的哈希值,因为这将允许我们以小步长不断增加其中一个,最终获得两个double
具有相同哈希值的非常不同的 s。
也许有一种方法可以将浮点数“标准化”为一些“标准”值?例如,一种非常糟糕的方法(甚至并不总是有效)是使用最接近整数的散列。
如果std::unordered_map
不是正确的选择,我很好奇对于以浮点数作为键的 O(1) 关联容器还有哪些其他选择。(请注意,出于性能原因,键必须是浮点数,而不是自定义的高精度十进制数。)
解决方案
推荐阅读
- python - 如何使用 python matplotlib 调整水平图表上的线宽
- mysql - 外键约束不适用于 ALTER TABLE
- makefile - 使用 makefile/make 自动生成 .map
- javascript - 使用 jQuery 选择器获取 div 高度?
- javascript - 来自我的 API 的 Material UI CardMedia 图像数据
- javascript - Angular 与 RxJS - 数组的 Reduce 函数在订阅 Observable 时不起作用
- python - Cython 中的这个声明是什么?cdef PyObject **工人。它是指向指针的指针吗?
- android - 重新创建活动后片段不可见
- linux - 如何从文件上的 grep 中拆分行?
- c# - 查找然后与 IMongoCollection 求和