set、unordered_set、multiset

(1)set和unordered_set的区别

  • set基于红黑树实现,红黑树具有自动排序的功能,因此set内部所有的数据,在任何时候,都是有序的。
  • unordered_set基于哈希表,数据插入和查找的时间复杂度很低,几乎是常数时间,而代价是消耗比较多的内存,无自动排序功能。底层实现上,使用一个下标范围比较大的数组来存储元素,形成很多的桶,利用hash函数对key进行映射到不同区域进行保存。

set与unordered_set的区别和map与unordered_map的区别一样。

(2)例子

  • set:
    输入:1,8,2,5,3,9
    输出:1,2,3,5,8,9

set默认是升序,其构造函数的排序规则是中是less<int>,降序为greater<int>。

  • Unordered_set:
    输入:1,8,2,5,3,9
    输出:9 3 1 8 2 5(也许这个顺序,受哈希函数的影响)

(3)set和multiset的区别

setmultiset会根据特定的排序原则将元素排序。两者不同之处在于,multisets允许元素重复,而set不允许重复。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容