C++ 无序映射使用什么位哈希函数?

C++ 无序映射使用什么位哈希函数?,c++,c++11,unordered-map,C++,C++11,Unordered Map,默认情况下,C++0x的unordered\u map使用什么位哈希std::hash函数返回size\u t。这是否意味着unordered\u映射使用16位哈希函数?std::unordered\u集默认使用std::hash 如果std::size\u t对您来说是16位的,那么我猜它确实使用了16位哈希。在16位机器上,我希望unordered\u map::max\u size()足够低,使用如此弱的散列不会成为问题。sizeof(std::size\u t)*CHAR\u bit位。

默认情况下,
C++0x
unordered\u map
使用什么位哈希
std::hash
函数返回
size\u t
。这是否意味着
unordered\u映射
使用16位哈希函数?

std::unordered\u集
默认使用
std::hash


如果std::size\u t对您来说是16位的,那么我猜它确实使用了16位哈希。在16位机器上,我希望
unordered\u map::max\u size()
足够低,使用如此弱的散列不会成为问题。

sizeof(std::size\u t)*CHAR\u bit
位。从你的问题来看,我想知道你是否希望散列函数是像SHA256或CRC32这样流行的函数——事实并非如此。例如,整数只是散列到它们自己。@Kerrek整数可能不会散列到它们自己。如果将顺序整数放入
无序的\u映射
@Cory:至少GCC和Boost是这样为基本的整数类型实现
std::hash
,这对性能来说是非常糟糕的。。。