STL基础--容器deque

deque与vector类似,能够进行随机查询

  • deque与vector的差异
  1. vector只能够在尾部快速地进行插入、删除操作;而deque能够在前后两端进行快速插入、删除操作
  2. 访问元素时,deque内部结构会多一个间接过程,所以元素的访问和迭代器的移动会比vector稍慢一些
  3. 在内存块大小有限制的系统中,deque可以包含更多元素,因为他使用不止一块内存
  4. deque不支持对容量和内存重新分配时机的控制
  5. deque会释放不再使用的内存区块
  1. 在中部插入或移除元素较慢,因为所有元素需要移动以腾出或填补空间
  2. 迭代器属于random-access iterator
  • 需要选择使用deque的场景
  1. 需要在两端安插、移除元素
  2. 无须指向容器内的元素
  3. 不再使用的元素必须释放

根据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  
   
   
   
   
   
   
   
   
   

猜你喜欢

转载自blog.csdn.net/pgr_zouxin/article/details/84306028