我有一个图像补丁数据库,即300 * 300图像,每个补丁大小为60 * 60。从而给我一个5 * 5的网格。我想针对每个补丁存储一些信息。由于我的数据库可以包含数百万个图像,因此我想使用unordered_map,以便找到补丁变得容易。
我的补丁信息包括imgId,补丁的x_position和补丁的y_position(所有整数)。我对unordered_map没有多少经验。但是通过一些教程,我意识到我将不得不使用自己的哈希函数。任何人都可以建议使用适当的哈希函数在unordered_map中存储上述信息的一种有效方法。
答案 0 :(得分:0)
您可以使用任何您喜欢的哈希函数来组合三个整数。这是一个经典的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;
}