(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的区别
set
和multiset
会根据特定的排序原则将元素排序。两者不同之处在于,multisets允许元素重复,而set不允许重复。