数据结构STL容器的等价物

时间:2012-06-16 15:14:52

标签: c++ data-structures stl equivalent

我研究数据结构,我想问一下STL容器的等价物。

例如

  • vector = dynamic array
  • queue = queue
  • stack = stack
  • priority_queue = heap
  • list =链表
  • set = tree
  • slist =单链表
  • bit_vector = vector bool
  • map = pair
  • deque =?
  • multiset =?
  • multimap =?
  • hash_set =?
  • hash_map =?
  • hash_multiset =?
  • hash_multimap =?
  • hash =?
  • bit_set =?

4 个答案:

答案 0 :(得分:6)

在C ++标准库容器中,标准本身试图不要过多地谈论实现。但是,对插入,删除,查找,范围插入等复杂性的非常具体的限制意味着大多数实现对容器使用相同类型的数据结构。关于你的一些例子:

  • std :: list:双重链表
  • std :: set,std :: multiset,std :: map,std :: multimap:self-balancing 二叉树,通常是红黑树。
  • hash_ *:C ++ 11提供unordered_set,unordered_map和multi 兄弟姐妹。这些是哈希表。
  • bitset:固定大小的数组

我相信STL遵循这些实现。

答案 1 :(得分:2)

我不认为符合条件的std :: map<>因为只是一对“对”是正确的。实际上,有一个名为std :: pair<>的实用程序这真的只是一对。的std ::地图<>存储唯一键和非唯一值的方式使得可以使用类似于数组语法的语法,索引的类型可以是数字或不是。

编辑:由于 juanchopanza ,将“容器”更正为“实用程序”。

答案 2 :(得分:1)

set和multiset-binary搜索树

地图和多图 - 二叉搜索树

deque - deque

hash*容器是作为哈希表实现的散列关联容器。 例如。 hash_map包含使用哈希表查找的pair<key,value>

在bitset中

the individual elements are accessed as special references which mimic bool elements

答案 3 :(得分:0)

vector = dynamic array  

queue = queue

stack = stack

priority_queue = priority queue based on binary heap 
                 priority_queue can be implemented using 
                 1. sorted array
                 2. sorted list ( unrolled list, skip list etc)
                 3. any other heap like Fibonacci heap, binomial heap

list = doubly linked list 

set = set based on AVL Tree ( usually ) 
      can implemented using any other binary balancing tree like 
      1. Binary Search Tree
      2. Red black Tree
      3. Splay Tree

slist = single linked list

map = map based on Red Black Tree ( usually ) 
      where every node is 'pair' structure
      can implemented using any other binary balancing tree like 
      1. Binary Search Tree
      2. AVL Tree
      3. Splay Tree

deque = deque

hash_set = set implemented using hash

hash_map = hash table

hash = 'Not Available', used as functor