小编Zhu*_* He的帖子

为什么STL双端队列没有实现为圆形向量?

我一直认为在C++标准模板库(STL)中,双端队列(deque)是一个带有圆形边界条件的大小可变数组(如矢量),这意味着有一个头指针i和一个尾指针j都指向某些数组的位置a[0..L-1].push_front是i--,push_back是j++,pop_front是i++,pop_back是j--.当指针ij到达L或者-1,它再次出现在数组的另一端(0L-1分别).如果数组大小耗尽(i==j插入新元素后的指针),则会将原始大小加倍的较大空间重新分配给a[]数据,并将数据复制到向量中.O(1)考虑到圆形边界条件,还有随机访问的时间.但有人告诉我,在STL双端队列中,实际上有一个指针阵列指向许多固定长度的数组段.它比圆形矢量复杂得多.不使用简单的圆形向量来实现双端队列的功能有什么好处?随机访问会变慢吗?

c++ stl deque

5
推荐指数
2
解决办法
1083
查看次数

标签 统计

c++ ×1

deque ×1

stl ×1