gpt4 book ai didi

c++ - vector 的哈希函数

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:09:04 24 4
gpt4 key购买 nike

首先,我想知道是否有人知道表示 n 维 vector 的 vector 的哈希函数?

其次,是否有类似的散列函数,我可以在其中指定一个分辨率,使两个“接近”的 vector 散列为相同的值?

例如:给定分辨率 r = 0.01q1 = {1.01, 2.3}q2 = {1.01, 2.31}将散列为相同的值。

感谢您的帮助!

最佳答案

也许这样的事情对你有用?

#include <stdint.h>
#include <iostream>
#include <vector>

using namespace std;

// simple variant of ELF hash ... but you could use any general-purpose hashing algorithm here instead
static int GetHashCodeForBytes(const char * bytes, int numBytes)
{
unsigned long h = 0, g;
for (int i=0; i<numBytes; i++)
{
h = ( h << 4 ) + bytes[i];
if (g = h & 0xF0000000L) {h ^= g >> 24;}
h &= ~g;
}
return h;
}

static int GetHashForDouble(double v)
{
return GetHashCodeForBytes((const char *)&v, sizeof(v));
}

static int GetHashForDoubleVector(const vector<double> & v)
{
int ret = 0;
for (int i=0; i<v.size(); i++) ret += ((i+1)*(GetHashForDouble(v[i])));
return ret;
}

int main()
{
vector<double> vec;
vec.push_back(3.14159);
vec.push_back(2.34567);
cout << " Hash code for test vec is: " << GetHashForDoubleVector(vec) << endl;
return 0;
}

关于c++ - vector<double> 的哈希函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15652086/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com