map/multimap/unordered_map/unordered_multimap; set/multiset/unordered_set/unordered_multiset

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/



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值