STL deque是作为循环链表实现的吗?

pas*_*ena 0 c# c++ stl

我无法找到如何在C++ STL中实现deque的内部结构.

我之前在某处读过,在C#中它实现为循环列表.它也适用于C++ STL吗?另外,你能解释一下为什么会这样吗?

编辑:由C++ STL,我的意思是与Visual Studio C++ 2010一起提供的STL库,以及与gcc一起发布的STL库

Jer*_*fin 8

不可以.如何实施它有一些变化,但圆形链表肯定符合条件.

在大多数实现中(包括VC++和gcc),它基本上是指向数据块的指针数组.添加数据时,通常只是将其添加到现有数据块中.当现有块变满时,它会分配一个新块,将其添加到您要插入的数组的末尾,然后将数据添加到它.当/如果基本数组空间不足时,它会分配一个新的并在那里复制指针.


Mar*_*som 6

C++标准要求双端队列具有恒定的随机查找时间.圆形链表不符合要求.