deque与vector类似,能够进行随机查询
- deque与vector的差异
- vector只能够在尾部快速地进行插入、删除操作;而deque能够在前后两端进行快速插入、删除操作
- 访问元素时,deque内部结构会多一个间接过程,所以元素的访问和迭代器的移动会比vector稍慢一些
- 在内存块大小有限制的系统中,deque可以包含更多元素,因为他使用不止一块内存
- deque不支持对容量和内存重新分配时机的控制
- deque会释放不再使用的内存区块
- 在中部插入或移除元素较慢,因为所有元素需要移动以腾出或填补空间
- 迭代器属于random-access iterator
- 需要选择使用deque的场景
- 需要在两端安插、移除元素
- 无须指向容器内的元素
- 不再使用的元素必须释放
根据deque与vector的区别我们猜测一下:vector存储元素时使用的是一段连续的内存,而deque使用的可能是多段内存,然后使其组合在一起达到模拟成一段连续的内存。下面我们做一些打印来验证一下这个猜测:
int main()
{
deque<int> dq;
for (int i = 0; i < 100; ++i)
{
dq.push_back(i);
}
for (size_t i = 0; i < dq.size(); ++i)
{
if (i % 5 == 0)
{
cout << endl;
}
cout << &dq[i] << ", ";
}
system("pause");
return 0;
}
输出:
明显这些地方都出现了内存跳动,所以猜测成立
- 构造方法
deque | |