本文主要是介绍【STL源码剖析】第五章 关联式容器 之 hash_set、hash_map、hash_multiset和hash_multimap,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
hash_set
hash_set以hashtable为底层实现机制。由于hash_set所供应的操作接口,hashtable都提供了,所以几乎所有的hash_set操作行为,都只是转调用hashtable的操作而已。
运用set目的是能够快速搜寻元素,这一点,不论底层是RB-tree或是hashtable都可以达成任务。但是,RB-tree有自动排序功能而hashtable没有,反应出来的结果就是,set的元素有自动排序功能而hash_set没有。
set的元素不像map那样可以同时拥有实值(value)和键值(key),set元素的键值就是实值,实值就是键值。这一点在hash_set中也是一样的。hash_set的使用方式,与set完全相同。
hash_map
hash_map以hashtable为底层机制,由于hash_map所提供的操作接口,hashtable都提供了,所以几乎所有的hash_map操作行为,都只是调用hashtable的操作行为而已。
运用map为的是根据键值快速搜寻元素,这一点底层不论是RB-tree或者是hashtable,都可以达到任务。但是,RB-tree有自动排序功能而hashtable没有,反应出来的结果就是,map的元素有自动排序的功能而has_map没有。
map的特性是,每一个元素同时拥有一个实值和一个键值,这一点在hash_map中也是一样的。hash_map的使用方式和map完全相同。
hash_multiset
hash_multiset的特性与multiset完全相同,唯一的差别在于它的底层机制是hashtable。也因此,hash_multiset的元素并不会被自动排序。
hash_multiset和hash_set实现上唯一的差别在于,前者的元素插入操作采用底层机制hashtable的insert_equal(),后者则采用insert_unique()。
hash_multimap
hash_multimap的特性与multimap完全相同、唯一的差别在于它的底层机制是hashtable。也因此,hash_multimap的元素并不会被自动排序。
hash_multimap和hash_map实现上的唯一差别在于,前者的元素插入操作采用底层机制hashtable的insert_equal(),后者则采用insert_unique()。
这篇关于【STL源码剖析】第五章 关联式容器 之 hash_set、hash_map、hash_multiset和hash_multimap的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!