C++11中: set, map, mulitset, multimap都是红黑树 unordered系列容器底层都是哈希实现(hashtable) 在C++早些版本中: hash_set, hash_multiset, hash_map, hash_multimap的底层实现也都是哈希结构(hashtable),并且C++11也支持它们
虽然STL只规范复杂度与接口,并不规范实现方法,但STL set多半以RB-tree为底层机制。SGI则是在STL标准规格之外另又提供了一个所谓的hash_set,以hashtable 为底层机制。由于hash_set所供应的操作接口。hashtable都提供了,所以几乎所有的hash_set操作行为,都只是转调用hashtable的操作行为而已。
hash_set
#includehash_set特点
1.不排序
2.无重复值
hash_set用法
插入,删除,查找,遍历(正向(常)迭代器, 反向(常)迭代器)都与set类似
感兴趣的话可以观看前面的博文set
hash_multiset
#includehash_multiset特点
1.不排序
2.值可重复
hash_multiset用法
插入,删除,查找,遍历(正向(常)迭代器,反向(常)迭代器)都与multiset类似
hash_map
#includehash_multiset特点
1.不排序
2.无重复值
hash_map用法
插入,删除,查找,遍历(正向(常)迭代器,反向(常)迭代器), [key]访问值 都与map类似
hash_multimap
#includehash_multimap特点
1.不排序
2.值可重复
hash_multimap用法
插入,删除,查找,遍历(正向(常)迭代器,反向(常)迭代器)都与multimap类似