✅作者简介: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
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?