c++ - STL列表、 vector 和集合的底层数据结构是什么?

标签 c++ list stl vector set

STL 列表、 vector 和集合的底层数据结构是什么?

我的解决方案:

  • vector :(动态分配)数组
  • 列表: ?
  • 设置:堆(或所有叶节点尽可能靠左的二叉树,并将最小/最大元素保持在顶部)

对吧?

最佳答案

根据评论,澄清一下,这些是最常见的选择,但根据所需的复杂性和其他因素,这些实现的支持可能会有所不同:

Vector = 动态调整数组大小

列表 = Doubly Linked List

设置 = Red/Black Tree (平衡二叉搜索树)

我认为您可能会混淆堆和 BST。堆被形象化为一棵树,但它实际上建立在可索引列表结构(例如数组或 vector )之上。 C++ 通过 algorithm header 提供堆函数在 STL 中。 BST 更像是一种用于高效查找的基于键/值的结构(这是您通常希望的集合)。

关于c++ - STL列表、 vector 和集合的底层数据结构是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7904947/

相关文章:

c++ - 涉及 LPWSTR 的这个 typedef 意味着什么?

c++ - 从 std::map 获取所有符合条件的条目?

python - 根据列表中的元素对列表作为值的字典进行排序

c++ - 实现加权 BFS 以找到最短路径

linq - 如何使用 LINQ 从对象列表中获取唯一的属性列表?

c++ - SWIG 如何在 Python 中包装 map<string,string>?

c++ - 比较 std::vector 在命名空间中使用自己的类不编译

c++ - 从 C++ vector 中删除对象

c++ - CUDA 信号到主机

c++ - Halide 在归一化互相关期间挂起