STL(第四课):deque

STL deque是标准模板库(STL)中的一个容器,deque是"double-ended queue"的缩写,它是一种双端队列的数据结构,允许在两端进行插入和删除操作。

STL deque中的元素存储在连续的内存块中,一般由多个缓冲区组成,每个缓冲区的大小固定。当插入元素时,如果当前缓冲区已满,则新增一个缓冲区并将元素插入到新缓冲区的开头;当删除元素时,如果当前缓冲区只剩下一个元素,则删除该元素并释放该缓冲区。

STL deque支持随机访问和迭代器,可以在任意位置进行插入和删除操作,也可以通过迭代器遍历元素。

STL deque常用的成员函数:

  1. push_front(val):在deque头部插入一个val元素;
  2. push_back(val):在deque尾部插入一个val元素;
  3. pop_front():删除deque头部的元素;
  4. pop_back():删除deque尾部的元素;
  5. front():返回deque头部的元素;
  6. back():返回deque尾部的元素;
  7. size():返回deque中元素的个数;
  8. clear():清空deque中的所有元素;
  9. empty():判断deque是否为空;
  10. begin():返回迭代器,指向deque头部的元素;
  11. end():返回迭代器,指向deque尾部的下一个位置;
  12. rbegin():返回反向迭代器,指向deque尾部的元素;
  13. rend():返回反向迭代器,指向deque头部的前一个位置。

STL deque的时间复杂度如下:

  1. 在deque头部或尾部插入或删除元素的时间复杂度为O(1);
  2. 随机访问deque中的元素的时间复杂度为O(1);
  3. 在deque中任意位置插入或删除元素的时间复杂度为O(n),其中n为deque中元素的个数。
相关推荐
421!几秒前
C语言学习笔记——10(结构体)
c语言·开发语言·笔记·stm32·学习·算法
551只玄猫2 分钟前
【数学建模 matlab 实验报告5】最短路问题作业
开发语言·数学建模·matlab·课程设计·图论·最短路径·实验报告
不只会拍照的程序猿2 分钟前
《嵌入式AI筑基笔记04:python函数与模块01—从C的刻板到Python的灵动》
c语言·开发语言·笔记·python
ada0_ada14 分钟前
Qt的Widgets项目
开发语言·qt
1104.北光c°6 分钟前
Leetcode146 LRU缓存的三种写法 【hot100算法个人笔记】【java写法】
java·开发语言·笔记·算法·leetcode·hot100·lru缓存
6Hzlia9 分钟前
【Hot 100 刷题计划】 LeetCode 239. 滑动窗口最大值 | C++ 优先队列与单调队列双解法
数据结构·算法·leetcode
花千树-01010 分钟前
用 Java 实现 RAG 组件化:从 PDF 加载到智能问答全流程
java·开发语言·人工智能·langchain·pdf·aigc·ai编程
Dovis(誓平步青云)10 分钟前
《QT学习第一篇:QT的概述与安装、信号与槽》
开发语言·qt·学习·功能详解
AI帮小忙10 分钟前
CTF安全竞赛能力矩阵
开发语言·php
2301_7890156211 分钟前
C++11新增特性:列表初始化&左值引用&右值引用&万能引用&移动构造&移动赋值&引用折叠&完美转发
c语言·开发语言·c++·c++11