SGI STL hashset hashmap hashmultiset hashmultimap 10

hash_set

STL set多以RB-tree作为底层容器,SGI在STL标准规范外提供hash_set,以hashtable为底层机制。hash_set所提供的操作接口,hashtable都有提供,所以几乎所有hash_set的操作都是转调用hashtable的操作。
set底层使用RB-tree可以自动排序,而hash_set没有。
hash_set和set元素的键值就是实值,实值就是键值。

hash_map

STL map多以RB-tree作为底层容器,SGI在STL标准规范外提供hash_map,以hashtable为底层机制。hash_map所提供的操作接口,hashtable都有提供,所以几乎所有hash_map的操作都是转调用hashtable的操作。
map底层使用RB-tree可以自动排序,而hash_map没有。
hahsh_map和map每个元素同时拥有实值和键值。

hash_multiset

hash_multiset与multiset特性相同,唯一差别是底层容器,hash_multiset底层是hashtable,因此hash_multiset底层未排序。
hash_multiset与hash_set实现唯一差别是hash_multiset元素插入底层使用hashtable的insert_equal(),而hash_set使用令insert_unique()。

hash_multimap

hash_multimap与multimap特性相同,唯一差别是底层容器,hash_multimap底层是hashtable,因此hash_multimap底层未排序。
hash_multimap与hash_map实现唯一差别是hash_multimap元素插入底层使用hashtable的insert_equal(),而hash_map使用令insert_unique()。