STL容器之deque

2023-11-03

deque容器简介

deque是“double-ended queue”的缩写,和vector一样都是STL的容器

  • deque是双端数组,而vector是单端的
  • deque在接口上和vector非常相似,在许多操作的地方都可以直接替换
  • deque可以随机存取元素(支持索引直接存取,用 []操作符或at()方法)
  • deque头部添加或移除元素都非常快,但是在中部插入删除元素比较费时
  • 在实际应用中,如果频繁的对头部操作,才用到deque

deque的操作

deque与vector在操作上几乎一样,deque多了两个函数
deque.push_front(elem);//在容器头部插入一个数据
deque.pop_front();//删除容器的第一个数据

int main()
{
	deque<int>d = {10,20,30,40};
	//在头部插入一个元素
	d.push_front(100);
	deque<int>::iterator it;
	for (it = d.begin(); it != d.end(); it++)
	{
		cout << *it << " ";
	}
	cout << endl;

	d.pop_front();
	for (it = d.begin(); it != d.end(); it++)
	{
		cout << *it << " ";
	}
	cout<<endl;

	d.erase(d.begin());
	for (it = d.begin(); it != d.end(); it++)
	{
		cout << *it << " ";
	}
	return 0;
}

在这里插入图片描述
deque与vector的区别:
vector容器插入扩容时,容器中地址是连续的,但是deque容器地址不一定连续(deque内部在重载运算符[]时,想办法将下一块不连续的空间地址找到)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

STL容器之deque 的相关文章

随机推荐

  • 使用maven建立web项目

    一 创建项目 1 Eclipse中用Maven创建项目 上图中Next 2 继续Next 3 选maven archetype webapp后 next 4 填写相应的信息 Packaged是默认创建一个包 不写也可以 5 创建好项目后 目
  • kubectl常用指令

    https www kubernetes org cn doc 45 kubectl annotate 更新资源的注解 kubectl api versions 以 组 版本 的格式输出服务端支持的API版本 kubectl apply 通
  • 学习开源项目Halo(一)

    Halo是一款现代化的个人博客系统 我们可以去它的github主页上使用git给拉取下来 别说不会git啊 身为一个自学的困难户 自学能力是必须的 找个教程照着做就成了 目前最新的版本是v1 1 1 使用的是gradle构建的项目 身为菜鸡
  • Mockito when函数实现方式

    平时写单测时 对于一些有限制或因当前环境无法访问的接口时 需要用到Mock来为目标接口添加自定义的实现 使其表现出我们希望表现的逻辑 从而不影响单元测试的实现 Mockito是常用的一个类库 使用也比较简单 使用分为注解的方式和直接创建对象
  • docker安装笔记-windows

    docker安装笔记 windows 菜鸟教程 https www runoob com docker windows docker install html 旧版 WSL 的手动安装步骤 https docs microsoft com
  • 关于我不“小心点”开我爸浏览器搜索历史这件事

    今天早上为了给我的小可爱发信息 我拼尽了全身力气使劲刷微信聊天记录 结果把自己的手机电耗尽了 不点破我要用手机做啥 反正不小心背下了老爸的手机查资料 没想到他的浏览器记录还藏着这么多 宝贵 的信息 哈哈哈哈哈 都是些令人大开眼界的东西 我发
  • 【Visual Studio 2019】 实用调试技巧,学会了都说好

    文章目录 前言 一 bug是什么 二 调试是什么 三 调试的基本步骤 四 Debug和Release的介绍 五 windows环境调试介绍 1 调试环境的准备 2 常用快捷键 六 调试的时候查看程序当前信息 1 调试实例 七 如何写出好 易
  • STM32建立工程模板时出现错误:error: #67: expected a “}“

    在MDK5开发环境中使用到标准库建立工程时 常常会出现以下编辑错误error 67 expected a 更改方法 options gt c c gt Preprocessor Symbols gt Define 将STM32F10X MD
  • JAVA-jdk8的API文件下载

    API文件 1 在线API 2 离线API 1 在线API 在线中文API文档 https www matools com api java8 2 离线API API下载地址 https www oracle com java techno
  • windows 系统 cmake 编译 python 使用 boost 库的问题

    使用 cmake 编译跨平台的开源框架 遇到 cmake 编译出错 主要报错是 FindBoost cmake 通过各种输入日志 message 发现有几个地方需要注意 现记录下来 需要修改成自己的boost版本 set RDK BOOST
  • 华为OD机试真题 Java 实现【分界线】【2023Q1 100分】

    一 题目描述 电视剧 分界线 里面有一个片段 男主为了向警察透露案件细节 且不暴露自己 于是将报刊上的字剪切下来 剪拼成匿名信 现在有一名举报人 希望借鉴这种手段 使用英文报刊完成举报操作 但为了增加文章的混淆度 只需满足每个单词中字母数量
  • API 网关基础

    目录 一 网关概述 二 网关提供的功能 三 常见网关系统 3 1 Netflix Zuul 3 2 Spring Cloud Gateway 3 3 Kong 3 4 APISIX 3 5 Shenyu 一 网关概述 API网关是一个服务器
  • [微信官方文档] 小程序-错误码信息与解决方案表

    错误码信息与解决方案表 错误码是通过binderror回调获取到的错误信息 代码 异常情况 理由 解决方案 1000 后端错误调用失败 该项错误不是开发者的异常情况 一般情况下忽略一段时间即可恢复 1001 参数错误 使用方法错误 可以前往
  • linux:docker /bin/bash作用

    参考 docker run it centos bin bash 后面的 bin bash的作用
  • 【整理一】

    1 说说你对react的理解 有哪些特性 React是一个前端js框架 React高效灵活 声明式设计 使用简单 组件式开发 提高代码的复用率 单向的数据绑定比双向的数据绑定更加安全 2 说说Real diff算法是怎么运作的 1 Diff
  • CrackQL:一款功能强大的图形化密码爆破和模糊测试工具

    关于CrackQL CrackQL是一款功能强大的图形化密码爆破和模糊测试工具 在该工具的帮助下 广大研究人员可以针对密码安全和应用程序安全进行渗透测试 除此之外 CrackQL同时也是一款通用的GraphQL渗透测试工具 它可以控制速率限
  • 积分图(三) - Boxfilter 的实现过程分析

    积分图 三 Boxfilter 的实现过程分析 Boxfilter 快速计算 它可以使复杂度为O MN 的求和 求方差等运算降低到O 1 或近似于O 1 的复杂度 它的缺点是不支持多尺度 Boxfilter 的原理有点类似 Integral
  • 大学应让我们相信各种可能性

    记得刚来学校的时候 导员们便告诉我们今年的学长学姐们找的工作工资有多高 他们保研保上了多么好的学校 有多少人竞赛怎么样怎么样 于是一开始 我们心中的价值取向便成了这些 而我们竟然还很激动 因为我们将来或许也能取得同样的工资 同样的成就 其实
  • python过期了怎么恢复_pycharm过期30天没法用了怎么办?

    用cleanmyMac查看 右键在finder中显示可以找到文件位置 image png Users xxx Library Saved Application State com jetbrains pycharm savedState
  • STL容器之deque

    文章目录 deque容器简介 deque的操作 deque容器简介 deque是 double ended queue 的缩写 和vector一样都是STL的容器 deque是双端数组 而vector是单端的 deque在接口上和vecto