一、介绍
C++的deque容器,又被称为双端数组。用于在头部和尾部进行插入和删除的操作。
二、deque的数据结构
deque虽然被称为双端数组,但其实他并不是完全类似vector(vector是一段连续空间),
deque的数据存储在内存中并不是一段连续的空间。如下图所示:
它是通过中控器和多个缓冲器进行管理元素的。
当向尾部插入元素时,它会在中控器找到最后一个缓冲区,并将元素插入到最后一个缓冲区的空白空间中。
当向头部插入元素时,它会在中控器找到第一个缓冲区,并将元素插入到最后一个缓冲区的空白空间中。
三、deque和vector的区别
vector一般对尾部元素操作, deque一般对头部和尾部元素操作,二者的区别如下:
效率 | deque | vector |
对头部的删除 | 高 | 低 |
对头部的插入 | 高 | 低 |
元素访问 | 低 | 高 |