我应该如何在C++中定义我自己的unsodered_map哈希函数
How should I define my own hash function for unordered_map in C++
我有一个图像补丁数据库,即300*300个图像,每个补丁的大小为60*60。因此给了我一个5*5的网格。我想针对每个补丁存储一些信息。由于我的数据库可以由数百万张图像组成,所以我想使用unordered_map,这样就可以很容易地找到补丁。
我的补丁信息包括imgId、补丁的x_position和补丁的y_position(均为整数)。我对undered_map没有太多经验。但通过一些教程,我意识到我将不得不使用自己的哈希函数。有人能提出一些有效的方法,用适当的哈希函数将上述信息存储在无序映射中吗。
您可以使用任何您喜欢的哈希函数来组合这三个整数。这里有一个经典的Knuth 32位组合器:
int hash(int v1, int v2, int v3)
{
int v = v1;
v *= 2654435741;
v += v2;
v *= 2654435761;
v ^= v3;
v *= 2654435789;
return v;
}
相关文章:
- 没有为自己的结构调用列表推回方法
- 在他自己的方法中,有可能将一个对象取消引用到另一个对象吗
- 在c++中为我自己的基于指针的数组分配内存的正确方法
- C++从对象自己的类中删除对象
- 使用 std::optional,而不是自己的结构
- 子轴围绕父轴而不是他自己的轴旋转
- 这个C++编译器优化(在自身的实例上调用对象自己的构造函数)的名称是什么,它是如何工作的?
- C++ 如何为自己的迭代器类从迭代器转换为const_iterator?
- 重载 + 自己的类和 std::string 的运算符
- 类无法访问自己的私有静态 constexpr 方法 - Clang bug?
- 是否可以在不填充自己的参数的情况下将模板函数作为参数传递?
- 如何访问模板参数自己的模板参数?
- 将矩阵乘以我自己的输入的向量
- 您应该在什么时候创建自己的异常类型
- 派生类是从基类继承 v 指针并仅使用它,还是也有自己的 v 指针?
- string1 == string2 和你自己的 for 循环比较有什么区别?
- 如何正确包含我自己的标头?
- 自己的自定义向量类. 内存重新分配
- 如何使用我构建的库,而不会从源代码出错,但不为我自己的项目编译?
- 如何使用ZeroMQ为协议缓冲区编写自己的RPC实现