ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

c – std :: set和std :: map 之间有什么区别

2019-10-06 19:07:09  阅读:362  来源: 互联网

标签:c set map binary-search-tree


参见英文答案 > What’s the difference between set<pair> and map in C++?                                    7个
我对c编程比较陌生,想知道是否有人可以帮我澄清一些问题.

http://www.cplusplus.com/reference/set/set/

http://www.cplusplus.com/reference/map/map/

我一直在阅读如何实现STL二进制搜索树,并且我一直注意到std :: set和std :: map经常被提到作为完成这样一个任务的方法.然而,这两者究竟有什么区别?对我来说,两者看起来几乎完全相同,我不确定是否有一些我没有注意到的东西,使一个人比另一个更好的特定任务.使用std :: set over std :: map来实现从数组或向量中获取值的STL二叉搜索树(例如速度)是否有任何优势?

如果有人能帮我理解这个概念,我会非常感激!

解决方法:

std :: set和std :: map都是关联容器.区别在于std :: sets只包含密钥,
 而在std :: map中有一个相关的值,即如果A – >; B,然后map [A​​] = B,这就像哈希而不是O(1),而不是O(log N).

您可以进一步查看unordered_map,它在O(1)时间内提供操作.

std :: set以排序格式保存数据.
两者的实现由平衡树(如AVL或红黑树)完成,给出O(logN)时间复杂度.

但值得注意的是,两者都可以存储唯一值.要克服这个问题,你还必须看到multimapmultiset.

希望这可以帮助 !

更新:在Red-Black树的情况下,重新平衡旋转是O(1)操作,而使用AVL这是一个O(log n)操作,使红黑树在重新平衡的这方面更有效阶段和更常用的可能原因之一.

标签:c,set,map,binary-search-tree
来源: https://codeday.me/bug/20191006/1861825.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有