草庐IT

c++ - 在 C++ 中计算字符串的 MD5

我有一个很好的内存映射文件示例,它计算文件的MD5哈希值。效果很好,没有问题。我想改变它来计算一个字符串的MD5哈希值。所以例子是:(包括#include以运行此代码,如果您想运行带有文件的代码,还可以提升内容)unsignedcharresult[MD5_DIGEST_LENGTH];boost::iostreams::mapped_file_sourcesrc(path);MD5((unsignedchar*)src.data(),src.size(),result);std::ostringstreamsout;sout我所做的改变是:std::stringstr("Hello"

c++ - 在 C++ 中计算字符串的 MD5

我有一个很好的内存映射文件示例,它计算文件的MD5哈希值。效果很好,没有问题。我想改变它来计算一个字符串的MD5哈希值。所以例子是:(包括#include以运行此代码,如果您想运行带有文件的代码,还可以提升内容)unsignedcharresult[MD5_DIGEST_LENGTH];boost::iostreams::mapped_file_sourcesrc(path);MD5((unsignedchar*)src.data(),src.size(),result);std::ostringstreamsout;sout我所做的改变是:std::stringstr("Hello"

c++ - Rolling hash的快速实现

我需要一个滚动哈希来搜索文件中的模式。(我正在尝试使用Rabin-Karpstringsearchalgorithm)。我了解一个好的Hash如何工作以及一个好的RollingHash应该如何工作,但我无法弄清楚如何有效地实现divide(或逆乘法)滚动散列时。我还阅读了rsync使用adler32的滚动版本,但这看起来不像是一个足够随机的散列。理想情况下,如果您能指出一个优化的C/C++实现,那就太好了,但是任何指向正确方向的指针都会有所帮助。 最佳答案 Cipher的“primebase”想法应该可以正常工作-尽管他发布的解决方

c++ - Rolling hash的快速实现

我需要一个滚动哈希来搜索文件中的模式。(我正在尝试使用Rabin-Karpstringsearchalgorithm)。我了解一个好的Hash如何工作以及一个好的RollingHash应该如何工作,但我无法弄清楚如何有效地实现divide(或逆乘法)滚动散列时。我还阅读了rsync使用adler32的滚动版本,但这看起来不像是一个足够随机的散列。理想情况下,如果您能指出一个优化的C/C++实现,那就太好了,但是任何指向正确方向的指针都会有所帮助。 最佳答案 Cipher的“primebase”想法应该可以正常工作-尽管他发布的解决方

c++ - std::hash_set vs std::unordered_set,它们是一回事吗?

我知道hash_set是非标准的,而unordered_set是标准的。但是,我想知道,性能方面,两者之间有什么区别?为什么要分开存在? 最佳答案 C++标准规定的unordered_容器的复杂性要求基本上没有为实现留下太多空间,它必须是某种哈希表。该标准是在充分意识到大多数供应商已经将这些数据结构作为扩展部署的情况下编写的。编译器供应商通常将这些容器称为“HashMap”或“哈希集”,这可能是您所指的(标准中没有文字std::hash_set,但是我认为GCC在单独的命名空间中有一个,对于其他编译器也是如此)。编写新标准时,作者希

c++ - std::hash_set vs std::unordered_set,它们是一回事吗?

我知道hash_set是非标准的,而unordered_set是标准的。但是,我想知道,性能方面,两者之间有什么区别?为什么要分开存在? 最佳答案 C++标准规定的unordered_容器的复杂性要求基本上没有为实现留下太多空间,它必须是某种哈希表。该标准是在充分意识到大多数供应商已经将这些数据结构作为扩展部署的情况下编写的。编译器供应商通常将这些容器称为“HashMap”或“哈希集”,这可能是您所指的(标准中没有文字std::hash_set,但是我认为GCC在单独的命名空间中有一个,对于其他编译器也是如此)。编写新标准时,作者希

基于Java实现的MD5算法实现

MD5算法实现一、算法原理概述MD5即MD5Message-DigestAlgorithm(MD5消息摘要算法)。MD4(1990)、MD5(1992,RFC1321)由RonRivest发明,是广泛使用的Hash算法,用于确保信息传输的完整性和一致性。MD5使用little-endian(小端模式),输入任意不定长度信息,以512-bit进行分组,生成四个32-bit数据,最后联合输出固定128-bit的信息摘要。MD5算法的基本过程为:填充、分块、缓冲区初始化、循环压缩、得出结果。MD5不是足够安全的。文件读取并转换为元素为01二进制的字符串该部分的代码实现在ReadFile.java中。

c++ - 为什么 std::hash 是结构而不是函数?

标准库将std::hash实现为专门用于不同类型的模板结构。它是这样使用的:#include#includeintmain(){std::hashhasher;std::cout我的问题是这种设计选择背后的原因是什么。为什么它没有作为模板函数实现并像这样使用:#include#includeintmain(){std::cout(1337) 最佳答案 有多种原因,每一个都足以选择:您可以部分特化类模板,但只能完全特化函数模板(至少到目前为止)。因此,您可以用std::hash替换整套相关模板参数。作为类模板。请注意,部分重载无济于事

c++ - 为什么 std::hash 是结构而不是函数?

标准库将std::hash实现为专门用于不同类型的模板结构。它是这样使用的:#include#includeintmain(){std::hashhasher;std::cout我的问题是这种设计选择背后的原因是什么。为什么它没有作为模板函数实现并像这样使用:#include#includeintmain(){std::cout(1337) 最佳答案 有多种原因,每一个都足以选择:您可以部分特化类模板,但只能完全特化函数模板(至少到目前为止)。因此,您可以用std::hash替换整套相关模板参数。作为类模板。请注意,部分重载无济于事

c++ - GCC 和 Clang 不在 C++17 中编译 std::hash<std::nullptr_t>

开启https://en.cppreference.com/w/cpp/utility/hash它说从C++17开始Eachstandardlibraryheaderthatdeclaresthetemplatestd::hashprovidesenabledspecializationsofstd::hashforstd::nullptr_tandallcv-unqualifiedarithmetictypes(includinganyextendedintegertypes),allenumerationtypes,andallpointertypes.所以,一个C++17兼容的编