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,降序为greater

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

(3)set和multiset的区别

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

你可能感兴趣的:(set、unordered_set、multiset)