STL哈希函数
STL Hash Functions
STL是否有任何可用的哈希函数,是公开暴露的?
我知道有一些非标准的实现使用哈希值(如boost::hash_map), MSVC8实现了hash_map/hash_set/等的一个版本。
但是是否有哈希函数是在c++ 98 STL中定义的?
如果没有,那么最好的非c++ 98可靠哈希函数来源是什么?
首选源顺序(从最可接受到最不可接受):Boost, c++ 0x标准STL, TR1,其他第三方。
总结:
- STL有hash函数 c++ 98标准库没有
- c++ TR1有哈希函数(
6.3.3[tr.unord.hash]
) - boost有hash函数
- c++ 11标准库有哈希函数(
20.8.12[unord.hash]
)
它们都是为散列关联容器设计的,而不是为加密设计的。
我猜你正在寻找哈希表的哈希函数,而不是密码学,对吗?
在这种情况下,boost::hash呢?
文档说它与TR1哈希兼容,这应该成为即将到来的c++ 0x标准的一部分。这意味着它可能已经在相当多的编译器中找到了。
对于加密散列,Boost中似乎有SHA-1实现,但如果您需要重量级的散列,则可以使用专用库,例如Crypto++。
理想情况下,Hash函数的选择取决于您对结果的使用。我怀疑这可能部分是由于"一种尺寸不适合所有"的想法。
相关文章:
- 如何为位集找到/实现一个好的哈希函数
- 对于短字符串来说,这是一个很好的哈希函数吗?
- 我在C++中使用提升哈希函数将 3 个双精度组合成一个面临冲突的哈希
- 无冲突的哈希函数
- 在 C++ 中为特定哈希表创建插入函数
- Qt5 哈希函数在 Windows 7 和 Windows10 上不会返回相同的哈希
- 解决由于在哈希函数中使用了不完整的类型而导致的编译失败
- 使用 Murmur2 64 位哈希函数生成会导致冲突的输入
- 错误:哈希函数必须可使用键类型的参数进行调用
- unordered_set是否适合存储矢量<int>元素的数据结构?如果是这样,我将如何实现哈希函数?
- 为什么C++哈希函数的返回类型是 std::size_t,而不是独立于平台的类型?
- 哈希函数计算
- 哈希函数中同一键的不同值和良好的哈希值排序
- 将 C# 哈希函数转换为C++
- 如何创建用于生成噪声的哈希函数
- 插入不从哈希函数中检索键
- 哈希<T>,更少的<T>函数:模板参数后的空括号
- 替代搜索函数和哈希向量<struct>C++
- 哈希表添加函数
- 完美的函数哈希函数生成器