hash_map 底层是采用hashtable实现的,在讲解hash_map之前,先看一下hash_table的原理。
(1)hashtable数据结构
hash table表格内的元素称为桶(bucket),而由桶所链接的元素称为节点(node),其中存入桶元素的容器为stl本身很重要的一种序列式容器——vector容器。之所以选择vector为存放桶元素的基础容器,主要是因为vector容器本身具有动态扩容能力,无需人工干预。而节点元素为自定义的结构体:
template<class Value>
struct __hashtable_node{
__hashtable_node* next;
Value val;
};
可以看到,这本身就是一种很典型的链式列