ash_set、hash_map、hash_multiset、hash_multimap四个关联容器都是以hashtable为底层实现方法(技巧)。
关于hashtable的底层实现,可参见STL hashtable的底层实现总结
一、hash_set
1、用hashtable实现,因hashtable中实现了几乎所有hash_set的操作,所以hash_set直接调用hashtable的方法即可。
2、与set不同的是,set用的是红黑树实现,且会自动排序,而hash_set不能。
3、hash_set的使用方式,和set完全相同。
二、hash_map
1、hashtable中提供了hash_map的几乎所有的操作,所以直接调用hashtable的操作即可。
2、与map的不同是map用红黑树实现可以自动排序,而hash_map不可。
3、hash_map的使用方式,和map完全相同。
三、hash_multiset
1、与hash_set不同的是,hash_multiset调用的是hashtable的insert_equal(),而hash_set调用的是insert_unique(),这样就决定了hash_multiset可以有重复元素。
2、hash_multiset的使用方式,与hash_set完全相同。
四、hash_multimap
1、与hash_map不同的是,hash_multimap调用的是hashtable的insert_equal(),而hash_map调用的是insert_unique(),这样就决定了hash_multimap可以有重复元素。
2、hash_multimap的使用方式,与hash_map完全相同。