map/multimap/unordered_map/unordered_multimap
其元素都是一个pair,即key-value映射,variable[key]=value;
map的key是唯一的,但multimap的key允许重复,他们都是由RB TREE实现的;
注意: map和multimap(实际上RB TREE)find是复杂度log(size);
insert的时间复杂度是Nlog(N+size),其中N为要插入的元素的个数,如果排序后,还能在优化
cplusplus上map http://www.cplusplus.com/reference/map/map/;
cplusplus上multimap http://www.cplusplus.com/reference/map/multimap/
unordered_map/unordered_multimap底层是由hash table实现的
unordered_map的key是唯一的,但unordered_multimap的key允许重复;
对这两种容器(实际是hash table)使用find平均下是常数时间,最坏情况下是遍历整个容器
而他们insert时候:
只插入一个元素: 平均情况是常数时间,最坏是整个size;
插入多个元素: 平均是N(N插入元素的个数),最坏N*(size+1)
还可能存在rehash情况(并未考虑到复杂度中)
cplusplus上unordered_map http://www.cplusplus.com/reference/unordered_map/unordered_map/
cplusplus上unordered_multimap http://www.cplusplus.com/reference/unordered_map/unordered_multimap/
set/multiset/unordered_set/unordered_multiset
这一系列容器容器就是集合了
set元素唯一,multiset元素允许重复,底层仍然有RB tree实现
注意: set和multiset(实际上RB TREE)find是复杂度log(size);
insert的时间复杂度是Nlog(N+size),其中N为要插入的元素的个数,如果排序后,还能在优化
cplusplus上set http://www.cplusplus.com/reference/set/set/
cplusplus上multiset http://www.cplusplus.com/reference/set/multiset/
unordered_set元素唯一,unordered_multiset元素允许重复,底层仍然有hash table实现
对这两种容器(实际是hash table)使用find平均下是常数时间,最坏情况下是遍历整个容器
而他们insert时候:
只插入一个元素: 平均情况是常数时间,最坏是整个size;
插入多个元素: 平均是N(N插入元素的个数),最坏N*(size+1)
还可能存在rehash情况(并未考虑到复杂度中)
cplusplus上unordered_set http://www.cplusplus.com/reference/unordered_set/unordered_set/
cplusplus上unordered_multiset http://www.cplusplus.com/reference/unordered_set/unordered_multiset/
本文详细介绍了C++标准模板库(STL)中的各种容器,包括map、multimap、unordered_map、unordered_multimap等关联容器,以及set、multiset、unordered_set、unordered_multiset等集合容器。探讨了它们的底层实现原理,如红黑树(RBTree)和哈希表(hashtable),并分析了不同操作的时间复杂度。
851

被折叠的 条评论
为什么被折叠?



