STL哈希函数

STL Hash Functions

本文关键字:函数 哈希 STL      更新时间:2023-10-16

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函数的选择取决于您对结果的使用。我怀疑这可能部分是由于"一种尺寸不适合所有"的想法。