- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试使用 MurmurHash(在 64 位计算机上返回 64 位哈希值)并已将简单的 3 个字母字符串“yes”发送给它,如下所示
char* charptr = "yes";
cout << MurmurHash64A(charptr, 3, 10);
(其中 3 是长度,10 是种子)这给出了预期的 64 位散列响应,我可以设置更多指向 C 字符串的指针,它们都返回相同的散列值。
但是如果我尝试向它发送一个 C++ 字符串:
string mystring = "yes";
string* strptr = &mystring;
cout << MurmurHash64A(strptr, 3, 10);
...我得到了与 C 字符串方法不同的结果,更重要的是,如果我以相同的方式设置其中的几个字符串,它们都会给出不同的结果。这向我暗示字符串可能没有存储在连续的内存位置,一些谷歌搜索支持这一点。所以我然后尝试在动态内存中设置一个 vector ,因为这是我能想到的强制连续内存的唯一方法。就像 C++ 字符串方法一样,它返回与 C 字符串方法不同的结果,当我设置几个时,它们都返回彼此不同的结果。我将它们设置如下:
char yes[3] = {'y', 'e', 's'};
vector<char> *charvec = new vector<char>;
void* myvecptr3 = &charvec;
charvec->reserve(3);
charvec->push_back(yes[0]);
charvec->push_back(yes[1]);
charvec->push_back(yes[2]);
据我了解,我的 char vector 将从给定 vector 的地址开始,并以与 C 字符串相同的方式用我的三个字符填充连续字节。我很困惑为什么我得到不同的结果,有什么帮助吗?谢谢C
最佳答案
&mystring
指向字符串对象。你想使用 mystring.c_str()
获取指向原始字符数组的指针。
对于 vector ,您需要 &(*charvec)[0]
.但您可能不想使用 new
;你可以做 vector<char> charvec; void *myvecptr3 = &charvec[0];
.
关于c++ - 将 C 字符串和 vector 发送到 MurmurHash 会产生不一致的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3986289/
我正在使用 C/C++ 中的 murmurhash 函数,就像这里建议的那样:https://sites.google.com/site/murmurhash/ (MurmurHash2.cpp)。我
我用 Murmur hash 对 800 000 个字符串值进行哈希处理,这导致了很多冲突(冲突),大约有 17 个冲突(不同的字符串给出相同的哈希值),这是否正常,任何人都知道 murmur has
我一直在努力深入了解 MurmurHash 是什么做。 我已经阅读了基本说明,但还没有找到关于何时使用它以及为什么使用它的良好解释。我知道它非常快,但想了解更多。 我问了一个相关的question关于
我正在查看 MurmurHash (sites.google.com/site/murmurhash/)我正在以一种黑盒子的方式使用它,而不是在这个阶段试图理解数学。 但是,我确实稍微看了一下代码并且
在 Scala 2.10 中,MurmurHash 由于某种原因已被弃用,说我现在应该使用 MurmurHash3。但 API 不同,MurmurHash3 没有有用的 scaladocs -> 失败
我正在用 C 语言实现散列表和散列函数,听说 Murmurhash 是适合此目的的快速算法。为此提供的查找一些 C 代码: uint32_t murmur3_32(const char *key, u
我需要(但找不到)MurmurHash 的纯 python(无 c++)实现,我太新手了,不能自己写。速度或内存使用对我的项目来说并不重要。 我找到了一个尝试 here ,但它仅限于 31 位散列,我
我需要使用 murmurhash 对 NSString 进行哈希处理我被迫这样做,因为其他团队正在这样做,我需要在 x86 平台上使用 64 位 key 长度,有人在 objective-C 中实现或
我正在使用 SBT 0.13.2(也可以是 0.13.5),并且正在尝试为 2.10 编写一个项目并将其交叉编译为 2.9 和 2.10。它使用 scala.util.hashing.MurmurHa
编辑:请参阅评论以获取正确答案。 大家好,我在安装 NLP 程序 SpaCY 时遇到了一个问题。 我尝试了 pip install -U spacy 和 pip install spacy,但我似乎遇
我正在尝试使用 MurmurHash(在 64 位计算机上返回 64 位哈希值)并已将简单的 3 个字母字符串“yes”发送给它,如下所示 char* charptr = "yes"; cout *
Haskell 和 Python 似乎不同意 Murmurhash2 结果。 Python、Java 和 PHP 返回相同的结果,但 Haskell 没有。关于 Haskell 上的 Murmurha
我正在编写一个 BloomFilter 并想使用 Scala 的默认 MurmurHash3 实现:scala.util.MurmurHash3。我的编译失败,但是出现以下编译错误: [error]
查看使用接受字符串并返回 64 位带符号整数值的哈希算法。 它不必在密码学上是可靠的,只要提供一个合适的冲突率就可以用作分布式存储的 key 。 我在看 murmur hash that seems
我是一名优秀的程序员,十分优秀!