Skip to content

Latest commit

 

History

History
5 lines (3 loc) · 1.02 KB

STL中,set的底层是如何实现的?.md

File metadata and controls

5 lines (3 loc) · 1.02 KB

在C++标准模板库(STL)中,set 是基于关联容器的一个抽象数据类型,用于存储不重复的元素。与 map 类似,set 的底层实现也通常采用红黑树(一种自平衡的二叉搜索树)。这使得 set 中的大多数操作(例如插入、删除和搜索)都能以对数时间复杂度 O(log n) 来执行,其中 n 是集合中元素的数量。

使用红黑树作为底层数据结构,set 可以保证元素会按照特定的顺序排序,通常是按照键值的递增顺序。红黑树确保了任何时候树都是相对平衡的,所以 set 容器在处理大量动态插入和删除操作时依然能够提供良好的性能。

除了 set,STL 还提供了 unordered_set 容器,其底层实现是基于哈希表。unordered_set 不保证元素的有序性,但在理想情况下可以提供更快的平均时间复杂度 O(1) 的访问性能。不过,在最坏的情况下(例如,当哈希函数导致很多碰撞时),它的性能可能会退化到 O(n)。