主要尝试回答下面几个问题:
- 一般情况下,使用 hash 结构,需要有桶的概念,那么 unordered_map 是如何自动管理桶的,这个问题其实再细分的话是这样的:
- 初始的桶是如何设置的
- 当需要扩容的时候,是如何重新分布的
- 对于 string,unordered_map 的默认哈希函数是怎样的
代码位于 /usr/include/c++/4.1.2/tr1/,编译器版本比较老,在这个目录下,有这些文件
total 308K -rw-r--r-- 1 root root 3.2K 2007-05-03 20:55 utility -rw-r--r-- 1 root root 5.5K 2007-05-03 20:55 unordered_set -rw-r--r-- 1 root root 5.8K 2007-05-03 20:55 unordered_map -rw-r--r-- 1 root root 5.2K 2007-05-03 20:55 type_traits_fwd.h -rw-r--r-- 1 root root 20K 2007-05-03 20:55 type_traits -rw-r--r-- 1 root root 4.8K 2007-05-03 20:55 tuple_iterate.h -rw-r--r-- 1 root root 11K 2007-05-03 20:55 tuple -rw-r--r-- 1 root root 41K 2007-05-03 20:55 repeat.h -rw-r--r-- 1 root root 1.9K 2007-05-03 20:55 ref_wrap_iterate.h -rw-r--r-- 1 root root 2.0K 2007-05-03 20:55 ref_fwd.h -rw-r--r-- 1 root root 2.3K 2007-05-03 20:55 mu_iterate.h -rw-r--r-- 1 root root 2.0K 2007-05-03 20:55 memory -rw-r--r-- 1 root root 63K 2007-05-03 2