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中元素的个数。
相关推荐
青 春 记 忆6 分钟前
零基础入门Python11|Git实战:为任务管理器建立版本历史
开发语言·git·vscode·python·python3.11
余额瞒着我当琳2 小时前
C++--深拷贝三件套 + swap + 写时拷贝 + vector 扩容 + reserve
java·开发语言·c++
坐吃山猪2 小时前
WebClient内存配置解析
开发语言·springboot·webflux
jdksjw3 小时前
同步与异步、阻塞与非阻塞、多线程、协程超详细讲解(Python并发编程从入门到精通)
开发语言·python
Zach_菠萝侠3 小时前
【DeepSeek Harness 研究】进化方向4:安全加固 思考、设计与实现
开发语言·安全·deepseek
ShineWinsu3 小时前
对于C++:布隆过滤器(bloomfilter)的详细解析
c++·面试·位图·位运算·布隆过滤器·海量数据·比特位
SL-staff3 小时前
技术实践:HR如何用JVS-Logic可视化编排实现考勤数据同步(含节点配置与异常处理)
开发语言·python·低代码·钉钉·可视化编排·jvs-logic·hr技术
SomeB1oody4 小时前
【RustyML入门】6.0. 数学工具
开发语言·后端·机器学习·rust·教程
进制树5 小时前
【飞控开发实战·⑲】ROS2无人机开发环境搭建:Jazzy安装、工作空间与hello_drone节点实战
开发语言·安全·无人机·课程设计
牛马也想出海5 小时前
亚马逊爬虫代理IP:IP类型选择与配置指南
开发语言·php