hash_map不是STL标准,但是大部分的STL版本都附带了hash_map的实现。
SGI STL hash_map基于hash table实现,关于hash table,有以下几点需要注意:
1、桶用vector实现,方便动态扩展;
2、find函数实现,先找桶,再一个个比较桶下的list元素,找到key相同的即为所求。因此,桶的大小决定了冲突的机率,一般来说桶越多,冲突越少;
桶是按照质数进行扩容的,如下:
53,97,193,389,769,1543,3079……
3、stl中对char、long、int、short等整型类型实现了hash和equal_to函数,其余类型必须由使用者自己实现;