32、set与unordered_set对比
时间: 2023-12-10 09:09:22 浏览: 30
set和unordered_set都是C++ STL中的容器,用于存储一组元素。它们之间的主要区别如下:
1. 内部实现方式不同:set是基于红黑树实现的,而unordered_set是基于哈希表实现的。因此,在不同的使用场景下,它们的表现可能会有所不同。
2. 查找效率不同:由于set是基于红黑树实现的,因此它的元素是有序的,可以快速进行查找、插入和删除操作,时间复杂度为O(log n)。而unordered_set是基于哈希表实现的,由于需要先计算哈希值再进行查找,因此查找效率比set略低,平均时间复杂度为O(1)。
3. 内存占用不同:由于set需要维护元素的有序性,因此每个元素需要额外的空间来存储指向前驱和后继节点的指针,因此set的内存占用比unordered_set略高。
4. 元素唯一性:由于set是基于红黑树实现的,它能够保证元素的唯一性,而unordered_set则需要通过哈希函数来判断元素是否相同。
综上所述,如果需要保证元素的有序性和唯一性,并且对内存占用没有特别高的要求,可以选择使用set。如果需要高效地进行元素查找,并且对元素的有序性没有特别要求,可以选择使用unordered_set。
相关问题
set与unordered_set对比
set和unordered_set都是C++ STL中的容器,用于存储一组元素。它们的主要区别在于底层实现方式不同,set是基于红黑树实现的,而unordered_set是基于哈希表实现的。因此,set的元素是有序的,而unordered_set的元素是无序的。在插入、查找、删除等操作上,unordered_set的效率更高,但是set的元素有序,可以进行一些特定的操作,比如二分查找。因此,在选择使用哪个容器时,需要根据具体的需求进行选择。
unordered_set与unordered_map的区别
unordered_set和unordered_map是C++标准库中的两个容器,它们的区别主要在于存储和访问元素的方式。
unordered_set是一个集合容器,用于存储唯一的元素。它使用哈希表实现,元素的存储顺序是无序的。unordered_set中的每个元素都是唯一的,重复的元素将被自动忽略。
unordered_map是一个关联容器,用于存储键值对。它也使用哈希表实现,键值对的存储顺序是无序的。unordered_map中的键是唯一的,而值可以重复。
因此,unordered_set适用于需要存储唯一元素的场景,而unordered_map适用于需要存储键值对的场景。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)