unorderedset 和set区别
时间: 2023-12-10 19:04:02 浏览: 97
unordered_set和set都是C++的关联容器,存储的值都是唯一的。但是它们的底层实现方式不同,导致它们在性能和特性上有一些区别。
unordered_set的底层实现是哈希表,它使用哈希函数将元素存储在buckets中,并且对插入、删除和查找操作的时间复杂度都是O(1)。由于使用哈希表,unordered_set的元素是无序的,即不会自动排序。而且在数据量较大的情况下,重新分配buckets会带来多余的内存操作,导致运行速度变慢。
而set的底层实现是红黑树,它会自动对插入的元素进行排序,所以set容器中的元素是有序的。红黑树的插入、删除和查找操作的时间复杂度都是O(log n)。红黑树的一个优点是能够保持元素的有序性,所以如果对有序性有要求的话,可以使用set。
综上所述,unordered_set适用于对插入、删除和查找速度要求较高的情况,而set适用于对元素有序性要求较高的情况。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [unordered_set与set的比较](https://blog.csdn.net/m0_53005929/article/details/124852681)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *2* [C++ unordered_set和set](https://blog.csdn.net/qq_40693072/article/details/124086458)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
- *3* [unordered_map和unordered_set的模拟实现](https://download.csdn.net/download/weixin_38629362/14886751)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"]
[ .reference_list ]
阅读全文
相关推荐


















