STL——deque

双端队列,可以对头端进行插入删除操作

记录一个常遇到的问题

deque subscript out of range 使用了还未定义的空间,大概率是没有初始化就使用了下标或者其他方式进行数据访问。

与vector区别

  • 内部实现方式:deque采用了分段连续存储的方式,由多个连续的存储块组成,每个存储块都是独立分配的,并且可以动态增长或缩小,而vector使用单个连续的存储块;

  • 插入和删除操作效率:deque在两端进行插入和删除的效率很高,时间复杂度为O(1),而vector则需要移动后续元素,时间复杂度为O(n)

  • 访问元素效率:deque存储块分段,故随机访问的效率比vector低。

构造函数

  • deque<T> deqT; //默认构造方式

  • deque(beg,end); //构造函数将[beg, end)区间中的元素拷贝给本身。

  • deque(n,ell); //构造函数将n个elem拷贝给本身。

  • deque(const deque &deq); //拷贝构造函数

操作与vector几乎一致

赋值操作

  • deque& operator=(const deque &deq); //重载等号操作符

  • assign(beg,end); //将[beg, end)区间中的数据拷贝赋值给本身。

  • assign(n,ele); //将n个elem拷贝赋值给本身。

操作与vector几乎一致

大小操作

  • deque.empty() //判空

  • deque.size() //返回元素个数

  • deque.resize(num); //重新指定容器的长度为num,若容器变长,则以默认值填充新位置。

//如果容器变短,则末尾超出容器长度的元素被删除。

  • deque.resize(num,ele); //重新指定容器的长度为num,若容器变长,则以elem值填充新位置。

//如果容器变短,则末尾超出容器长度的元素被删除。

deque没有容量的概念

插入删除

  • 两端操作

    • push_back(ele);

    • pop_back();

    • push_front(ele);

    • pop_front();

  • 指定位置操作

    • insert(pos,elem); //在pos位置插入一个elem元素的拷贝,返回新数据的位置。

    • insert(pos,n,elem); //在pos位置插入n个elem数据,无返回值。

    • insert(pos,beg,end); //在pos位置插入[beg,end)区间的数据,无返回值。

    • clear(); //清空容器的所有数据

    • erase(beg,end); //删除[beg,end)区间的数据,返回下一个数据的位置。

    • erase(pos); //删除pos位置的数据,返回下一个数据的位置。

注意,pos指的是迭代器

数据存取

  • at(int idx); //返回索引idx所指的数据

  • front(); //返回容器中第一个数据元素

  • back(); //返回容器中最后一个数据元素

sort(iterator beg,iterator end); //对beg和end区间内元素进行排序

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/7458.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java代码基础算法练习-年龄问题-2024.05.07

数学家维纳智力早熟&#xff0c;11岁就上了大学。一次&#xff0c;他参加某个重要会议&#xff0c;年轻的脸孔引人注目。于是有人询问他的年龄&#xff0c;他回答说&#xff1a;“我年龄的立方是个4位数。我年龄的4次方是个6位数。这10 个数字正好包含了从0到9这10个数字&#…

mac安装linux的centos strem9 虚拟机解压rar文件报错

背景&#xff1a;解压rar文件需要再linux上安装unrar工具 yum install unrar直接安装的后解压报错,如图 解决办法&#xff1a; 下载&#xff1a;wget https://www.rarlab.com/rar/rarlinux-x64-6.0.2.tar.gz 安装&#xff1a; tar -zxvf rarlinux-x64-6.0.2.tar.gz cd rar …

分销体系搭建sop,如何快速建立分销体系

坐标&#xff1a;厦门&#xff0c;我是易创客运营肖琳 深耕社交新零售行业10年&#xff0c;主要提供新零售系统工具及顶层商业模式设计、全案策划运营陪跑等。 今天为大家介绍分销体系搭建 SOP。 分销是什么? 分销是一种店铺利用客户推广带来流量与销量的营销工具。分销商通过…

Puppeteer的基本使用及多目标同时访问

文章目录 一、安装 puppeteer 并更改默认缓存路径1、更改 Puppeteer 用于安装浏览器的默认缓存目录2、安装 puppeteer3、项目结构目录 二、基本使用1、启动浏览器并访问目标网站2、生成截图3、生成 PDF 文件4、获取目标网站 html 结构并解析5、拦截请求6、执行 JavaScript7、同…

大模型最新消息

最新消息如下&#xff1a; 大语言模型服务的多样化&#xff1a;互联网上出现了许多免费的大语言模型服务&#xff0c;如OpenAI的ChatGPT、Google的Gemini、Anthropic的Claude、Meta的Llama等。这些服务的推出使得大语言模型的应用更加广泛和便捷。软银和苹果的AI新动向&#x…

IEEE(TOP),CCF推荐,5本毕业神刊,最快7天录用!指标优秀

本期盘点计算机领域超顺快刊&#xff0c;涵盖IEEE1区TOP、CCF推荐SCIE&#xff0c;期刊指标优秀&#xff0c;审稿周期短&#xff0c;质量稳定&#xff0c;有意向作者请看下文&#xff1a; IEEE旗下1区&#xff08;TOP&#xff09; 1 期刊简介 ✅出版社&#xff1a;IEEE ✅影…

《安富莱嵌入式周报》第336期:开源计算器,交流欧姆表,高性能开源BLDC控制器,Matlab2024a,操作系统漏洞排名,微软开源MS-DOS V4.0

周报汇总地址&#xff1a;嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 本周更新一期视频教程&#xff1a; BSP视频教程第30期&#xff1a;UDS ISO14229统一诊断服务CAN总线专题&#xff0c;常…

Golang | Leetcode Golang题解之第68题文本左右对齐

题目&#xff1a; 题解&#xff1a; // blank 返回长度为 n 的由空格组成的字符串 func blank(n int) string {return strings.Repeat(" ", n) }func fullJustify(words []string, maxWidth int) (ans []string) {right, n : 0, len(words)for {left : right // 当前…

简述 BIO 、NIO 模型

BIO : 同步阻塞I/O&#xff08;Block IO&#xff09; 服务器实现模式为每一个连接一个线程&#xff0c;即客户端有连接请求时服务器就需要启动一个线程进行处理&#xff0c;如果这个连接不做任何事情会造成不必要的线程开销&#xff0c;此处可以通过线程池机制进行优化。 impo…

工业光源环形系列一高均匀条形光源特点

产品特点 ◆可以根据检测需求随意调整照射角度&#xff1a; ◆可以根据检测需求选择光源颜色&#xff1a; ◆多个条形光源可以自由组合&#xff1a; ◆使用贴片灯珠&#xff0c;均匀性更好。

VMP 简单源码分析(.net)

虚拟机 获取CPU的型号 实现了一个指令集解释器&#xff0c;每个操作码对应一个特定的处理函数&#xff0c;用于执行相应的指令操作。在执行字节码时&#xff0c;解释器会根据操作码查找并调用相应的处理函数来执行指令。 截获异常 先由虚拟机处理 处理不了再抛出异常 priva…

第五节 内联框架强化练习

建立左右常用框架结构说明 1、添加动态面板如下&#xff1a; 2、添加树元件 3、添加树节点&#xff08;右键->添加子节点 右键->点添加节点&#xff09; 4、添加交互页面 5、添加单击交互跳转事件到内联框架中(注意当前内联框架与当前面板要处在同级目录) 6、添加交互跳…

外贸尾货全新变现玩法,冷门暴利项目,单月轻松3W+

有些朋友可能不太了解什么是外贸尾货。实际上&#xff0c;当我们国内的厂家进行外贸出口业务时&#xff0c;生产的商品并不总是能够完全销售到国外。为了避免出现瑕疵品&#xff0c;厂家通常会生产超出订单数量的产品&#xff0c;以确保产品质量和满足出口需求。例如&#xff0…

uniapp实现下拉刷新效果-uniapp原生接口

onPullDownRefresh | uni-app官网 1、需要在 pages.json 里&#xff0c;找到的当前页面的pages节点&#xff0c;并在 style 选项中开启 enablePullDownRefresh 2、生命周期中添加onPullDownRefresh&#xff0c;下拉时获取数据 3、处理完数据后&#xff0c;停止下拉效果stopPul…

web前端学习笔记7-iconfont使用

7. iconfont的使用流程 字体图标使用较多的是阿里巴巴iconfont图标库,它是阿里巴巴体验团队推出的图标库和图标管理平台,提供了大量免费和可定制的矢量图标,以满足网页设计、平面设计、UI设计、应用程序开发和其他创意项目的需求。 官方网站:https://www.iconfont.cn/ 使用…

MYSQL RR隔离级别下无索引更新是否表锁?

最近在MYSQL菜鸟群有群友提问,说他看了某个公众号里面文章说 "MYSQL RR隔离级别下无索引更新会导致表锁! " 他表示疑惑,而且不仅是他,还有很多个她在不同的群里同样表示疑惑! 下面是群友的截图 是啊 MYSQL 以及进化到了8.3.0版本了,普遍都使用5.7和8.0版本.而且还…

Navicat for MySQL Mac:数据库管理与开发的理想工具

Navicat for MySQL Mac是一款功能强大的数据库管理与开发工具&#xff0c;专为Mac用户设计&#xff0c;旨在提供高效、便捷的数据库操作体验。 它支持创建、管理和维护MySQL和MariaDB数据库&#xff0c;通过直观的图形界面&#xff0c;用户可以轻松进行数据库连接、查询、编辑和…

提升开发者效率的必备工具

目录 前言1. Git2. Docker3. Postman4. Apipost5. PyCharm6. IntelliJ IDEA7. Everything8. Sublime Text9. 截图工具&#xff08;Snipaste&#xff09;10. Markdown 在线编辑器11. Xmind 思维导图12. 在线流程图制作工具&#xff08;如 ProcessOn&#xff09;结语 前言 在快节…

MambaMOS:基于激光雷达的三维运动物体分割与运动感知状态空间模型

MambaMOS:基于激光雷达的三维运动物体分割与运动感知状态空间模型 摘要INTRODUCTIONRelated WorkMethod MambaMOS: LiDAR-based 3D Moving Object Segmentation with Motion-aware State Space Model 摘要 激光雷达基于的运动目标分割&#xff08;MOS&#xff09;旨在利用之前…

106短信群发平台:拓客拉新、商品促销,效果究竟如何?一试便知!

106短信群发平台在拓客拉新和商品促销方面的效果是非常显著的。 首先&#xff0c;从发送速度和到达率来看&#xff0c;106短信平台表现优秀。无论是节假日还是平日&#xff0c;其发送速度都能保持在一个较快的水平&#xff0c;这对于需要及时到达的营销信息尤为重要。同时&…