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/