什么是STL列表,向量和集合的基础数据结构?

时间:2011-10-26 15:24:12

标签: c++ list stl vector set

STL列表,向量和集合的基础数据结构是什么?

我的解决方案:

  • vector :(动态分配)数组
  • 列表:?
  • set:heap(或二叉树,所有叶节点尽可能位于左侧,并保持最小/最大元素位于顶部)

右?

2 个答案:

答案 0 :(得分:20)

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

Vector =动态调整数组大小

列表= Doubly Linked List

Set = Red/Black Tree(平衡二进制搜索树)

我想你可能会混淆堆和BST。堆可视化为树,但它实际上构建在可索引列表结构(例如数组或向量)之上。 C ++通过STL中的algorithm header提供堆函数。 BST更多是用于高效查找的基于键/值的结构(这是您通常想要的一组)。

答案 1 :(得分:5)

标准不保证使用什么数据结构,只有复杂性保证,因此实现可以选择任何满足它们的结构。

也就是说,std::vector通常是dynamic arraystd::list可能是doubly-linked liststd::set通常是某种self-balancing binary tree