关联容器:set和map及其无序容器

定义

关联容器:set和map及其无序容器
 setmapunordered_set(c++11)unordered_map (c++11)
原理RB树RB树Hash tableHash table
元素的值唯一key唯一,value不唯一同set同map
下标操作不支持支持
自动排序强制排序按key强制排序
查找时间复杂度log(n)平均为O(1),最坏情况为O(n)
插入时间复杂度log(n)+Rebalance
删除时间复杂度log(n)+Rebalance
总结set和unordered_set(map同理)就外部使用来说是完全一致的。对于那些有顺序要求的问题,用set会更高效一些。对于查找问题,unordered_set会高效一些。另外,unordered_set执行效率是比set高的。
Rebalance:元素重新自动排序

附录

  1. 顺序容器包括vector、deque、list、forward_list、array、string。
    所有顺序容器都提供了快速顺序访问元素的能力。元素通过容器中的位置进行顺序保存和访问。

    关联容器包括set、map。
    元素通过关键字进行保存和访问。

  2. map是key_value的形式,所以map里的所有元素都是pair类型。pair里面的first被称为key(键),second被称为value(值)。它可以通过关键字查找映射关联信息value,同时根据key值进行排序。
  3. 无论是set还是unordered_set(map同理),都可以用multi形式(multiset和unordered_multiset)实现关键字冗余(可重复出现)。
  4. set就是关键字的简单集合。当只是想知道一个值是否存在时,set是最有用的。
  5. map和set是稳定排序,multimap和multiset是不稳定排序。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值