STL列表,向量和集合的基础数据结构是什么?
我的解决方案:
右?
答案 0 :(得分:20)
基于评论,澄清一下,这些是最常见的选择,但基于所需的复杂性和其他因素,这些实施的支持可能会有所不同:
Vector =动态调整数组大小
Set = Red/Black Tree(平衡二进制搜索树)
我想你可能会混淆堆和BST。堆可视化为树,但它实际上构建在可索引列表结构(例如数组或向量)之上。 C ++通过STL中的algorithm header提供堆函数。 BST更多是用于高效查找的基于键/值的结构(这是您通常想要的一组)。
答案 1 :(得分:5)
标准不保证使用什么数据结构,只有复杂性保证,因此实现可以选择任何满足它们的结构。
也就是说,std::vector
通常是dynamic array,std::list
可能是doubly-linked list而std::set
通常是某种self-balancing binary tree