✅作者简介:C/C++领域新星创作者,为C++和java奋斗中 ✨个人主页:微凉秋意的主页 🔥系列专栏:C++STL快速上手 📃推荐一款模拟面试、刷题神器👉注册免费刷题
🔥前言
书接上文,今天分享的是和vector容器功能很像的容器——deque,了解deque容器的本质,使用方法以及与vector容器的不同之处,再后面的文章里会有vector和deque容器结合的具体案例分享给大家。
文章目录
deque容器的概念模型
- deque容器的概念模型
- deque容器的基本操作
- 构造函数
- 赋值操作
- 容器大小
- 插入和删除
- 数据存取
- 排序
- 结语
是双端数组,可以对头部进行插入删除操作
- 示意图
值得注意的是deque容器比vector容器多了头插、头删的操作以及front()和back(),后面这两个分别代表容器的第一个元素和最后一个元素,并不是迭代器,调用他们会得到具体的值。
deque与vector的区别:
- vector对于头部的插入删除效率低,数据量越大,效率越低
- deque相对而言,对头部的插入删除速度会比vector快
- vector访问元素时的速度会比deque快,这和两者
内部实现有关
deque的内部工作原理:
- deque内部有个中控器,维护每段缓冲区中的内容,缓冲区中存放真实数据。
- 中控器维护的是每个缓冲区的地址,使得使用deque时像一片连续的内存空间
- deque的迭代器也是支持随机访问的
- 图示:
deque进行插入的时候是在结点对应的缓冲区操作的,缓冲区不有位置的时候直接插入到缓冲区中,缓冲区满的话就开辟新节点,再进行插入,所以才说像是连续的存储空间。
包括构造方法、赋值、计算大小、插入删除等
构造函数- deque容器的构造
函数原型
deque deq;其中T是泛型,用来存放数据类型,这是默认构造函数,较为常用deque(deq.begin(),deq.end());将[deq.begin(),deq.end)前闭后开的区间内的元素拷贝给本身容器deque(n,elem);构造函数将n个elem值拷贝给本身容器deque(const deque &ans);拷贝构造函数
代码示例:
//打印
void printDeque(const deque& d)//只读容器不可改
{//迭代器变为 const_iterator
for (deque::const_iterator it = d.begin(); it != d.end(); it++)
{
cout
关注
打赏
热门博文
- 【Java】设计模式之单例模式与工厂模式
- 【Java面试宝典】线程安全问题|线程死锁的出现|线程安全的集合类
- 【Rust指南】错误的分类与传递|使用kind进行异常处理
- 【Servlet】规范项目结构|基于Mysql+JDBC+Servlet 制作简易网页|实现登录、添加、删除、显示的功能
- 【C语言】规范掌握C语言函数|数组名的妙用|指针快速入门|综合使用小案例
- 【Servlet】超详细开发步骤|在idea上配置Tomcat|网页显示当前系统时间
- 新学期,新FLAG | 要以码为梦而非夜郎自大
- 猿创征文 | 【Rust指南】枚举类与模式匹配精讲
- 牛客网《剑指offer》专栏刷题练习之二叉树合集
- 开学季&河科大社区活动详情介绍实例
