1 Star 0 Fork 0

huyi / TechCPP

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
STL中,set的底层是如何实现的?.md 1.02 KB
一键复制 编辑 原始数据 按行查看 历史
葛昆仑 提交于 2024-02-10 03:02 . update:10 articles

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

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

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

1
https://gitee.com/hylhm/TechCPP.git
git@gitee.com:hylhm/TechCPP.git
hylhm
TechCPP
TechCPP
master

搜索帮助