请你说一说stl里面set和map怎么实现的-笔试面试资料

这是qklbishe.com第15264 篇笔试面试资料
提供答案分析,通过本文《请你说一说stl里面set和map怎么实现的-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。

答案:

请你说一说stl里面set和map怎么实现的

请你说一说stl里面set和map怎么实现的 崔照旭
首先map和set都是C++的关联容器,***其底层实现都是红黑树(***RB-Tree)。
set是一种关联式容器,其特性如下:
    1 set以RBTree作为底层容器
    2 所得元素的只有key没有value,value就是key
    3 不允许出现键值重复
    4 所有的元素都会被自动排序
    5 不能通过迭代器来改变set的值,因为set的迭代器是const的
    6 set不支持下标操作
  multiset相对于set来说,区别就是multiset允许键值重复,在multiset中调用的是RBTree的insert_equal函数,其他的基本与set相同
map和set一样是关联式容器,它们的底层容器都是红黑树,区别就在于map的值不作为键,键和值是分开的。它的特性如下:
   1 map以RBTree作为底层容器
   2 所有元素都是键+值存在
   3 不允许键重复
  4 所有元素是通过键进行自动排序的
  5 map的键是不能修改的,但是其键对应的值是可以修改的
multimap和map的关系就跟multiset和set的关系一样,multimap允许键的值相同,因此在插入操作的时候用到insert_equal(),除此之外,基本上与map相同。
宗上map和set是根据关键字排序来保证其有序性的,如果允许修改key的话,那么首先需要删除该键,然后调节平衡,再插入修改后的键值,调节平衡,如此一来,严重破坏了map和set的结构,导致iterator失效,不知道应该指向改变前的位置,还是指向改变后的位置。所以STL中将set的迭代器设置成const,不允许修改迭代器的值;而map的迭代器则不允许修改key值,允许修改value值。

今天 15:31:16 回复(0)

文章部分来自互联网,侵权联系删除
www.qklbishe.com

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 请你说一说stl里面set和map怎么实现的-笔试面试资料

提供最优质的资源集合

立即查看 了解详情