STL deque是标准模板库(STL)中的一个容器,deque是"double-ended queue"的缩写,它是一种双端队列的数据结构,允许在两端进行插入和删除操作。
STL deque中的元素存储在连续的内存块中,一般由多个缓冲区组成,每个缓冲区的大小固定。当插入元素时,如果当前缓冲区已满,则新增一个缓冲区并将元素插入到新缓冲区的开头;当删除元素时,如果当前缓冲区只剩下一个元素,则删除该元素并释放该缓冲区。
STL deque支持随机访问和迭代器,可以在任意位置进行插入和删除操作,也可以通过迭代器遍历元素。
STL deque常用的成员函数:
- push_front(val):在deque头部插入一个val元素;
- push_back(val):在deque尾部插入一个val元素;
- pop_front():删除deque头部的元素;
- pop_back():删除deque尾部的元素;
- front():返回deque头部的元素;
- back():返回deque尾部的元素;
- size():返回deque中元素的个数;
- clear():清空deque中的所有元素;
- empty():判断deque是否为空;
- begin():返回迭代器,指向deque头部的元素;
- end():返回迭代器,指向deque尾部的下一个位置;
- rbegin():返回反向迭代器,指向deque尾部的元素;
- rend():返回反向迭代器,指向deque头部的前一个位置。
STL deque的时间复杂度如下:
- 在deque头部或尾部插入或删除元素的时间复杂度为O(1);
- 随机访问deque中的元素的时间复杂度为O(1);
- 在deque中任意位置插入或删除元素的时间复杂度为O(n),其中n为deque中元素的个数。