当前位置: 首页 > news >正文

C++ stack、queue以及deque

1、stack和queue常用接口

严格来说栈和队列的实现是容器适配器
1、常用接口:
栈:top、push、pop、size、emptystack - C++ Reference (cplusplus.com)

队列:top、push、pop、swap、size、emptyqueue - C++ Reference (cplusplus.com)

2、deque:双端队列

deque - C++ Reference (cplusplus.com)
queue使用的是deque实现的
deque是一个比较复杂的容器
结合了list和vector的优势
但是,在结构的设计上做出了必要的牺牲
deque是一个一个的小数组,小数组的大小N固定
每一个小数组使用一个中控数组控制
中控数组内部是每一个小数组的开始位置
访问数据第i个数据时:
小数组就是i/N
小数组内部的位置是i%N
同时,中控数组从中间开始开辟,这是为了支持尾插和头插
尾插就是在中控数组空间的右边开辟小数组,进行小数组的头插
头插就是在中控数组空间的左边开辟小数组,但是是小数组的尾插

尽管deque结构的设计使得其在尾插和头插方面具备了list和vector不具备的优势
但是,这样的结构设计也导致了一个致命的弱点:
1、中间插入很麻烦
2、[]访问相对不快,没有vector快
所以说,中间插入不如list,访问遍历不如vector
但是综合来说,已经不错了
所以说,stack和queue的底层是使用deque实现的,因为基本不会有中间插入的场景

3、容器适配器设计模式


栈:

#pragma once
#include<vector>
using namespace std;namespace myspace
{template <class T, class Container = vector<T> >class stack{public:void push(const T& val){_con.push_back(val);}void pop(){_con.pop_back();}size_t size(){return _con.size();}bool empty(){return _con.empty();}T& top(){return _con.back();}private:Container _con;};};

队列:

#pragma once
#include<deque>
//使用deque实现
using namespace std;namespace mysapce2
{template<class T,class Container = deque<T>>class queue{public:void push(const T& val){_con.push_back(val);}void pop(){_con.pop_front();}size_t size(){return _con.size();}bool empty(){return _con.empty();}T& front(){return _con.front();}T& back(){return _con.back();}private:Container	_con;};}


 

相关文章:

C++ stack、queue以及deque

1、stack和queue常用接口 严格来说栈和队列的实现是容器适配器 1、常用接口&#xff1a; 栈&#xff1a;top、push、pop、size、emptystack - C Reference (cplusplus.com) 队列&#xff1a;top、push、pop、swap、size、emptyqueue - C Reference (cplusplus.com) 2、deque&a…...

科沃斯,「扫地茅」荣光恐难再现

作者 | 辰纹 来源 | 洞见新研社 科沃斯恐怕已经很难再回到被市场誉为“扫地茅”时的荣光了。 不久前&#xff0c;科沃斯发布2023年财报&#xff0c;报告期内营业收入155亿&#xff0c;同比仅增长1.16%&#xff0c;归母净利润6.12亿元&#xff0c;同比下降63.96%&#xff0c;直…...

双向BFS算法学习

双向BFS算法学习 推荐练习题 力扣“127”题&#xff1a;单词接龙 “752”题&#xff1a;打开轮盘锁 这里推荐一篇力扣题解 双向BFS 这里使用打开轮盘锁的题干进行举例&#xff1a; 你有一个带有四个圆形拨轮的转盘锁。每个拨轮都有10个数字&#xff1a; ‘0’, ‘1’, ‘2’,…...

C++从入门到精通---模版

文章目录 泛型编程函数模版模版参数的匹配原则类模版类模版的定义格式类模版的实例化 总结 泛型编程 泛型编程是一种编程范式&#xff0c;旨在实现通用性和灵活性。它允许在编写代码时使用参数化类型&#xff0c;而不是具体的类型&#xff0c;从而使代码更加灵活和可重用。 在…...

Unity数据持久化之Json

Json概述 Json是什么? 全称:JavaScript对象简谱(JavaScript Object Notation) Json是国际通用的一种轻量级的数据交换格式 主要在网络通讯中用于传输数据,或本地数据存储和读取 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率 我们一般使用Json文件来…...

LeetCode 35.搜索插入位置

给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2 示例 2: 输入…...

速来get!多微信聚合聊天功能大揭秘!

随着网络时代的发展&#xff0c;微信成为了职场中不可或缺的沟通工具&#xff0c;很多人都有着多个微信号&#xff0c;而要想高效管理这些账号&#xff0c;那就少不了工具的帮忙。 通过微信管理系统&#xff0c;可以轻松实现多个微信号聚合聊天&#xff0c;提高沟通效率。 1、…...

【跟我学RISC-V】(一)认识RISC-V指令集并搭建实验环境

目录 写在前面 一、RISC-V指令集简介 1、什么是ISA 2、有哪些ISA 3、CISC和RISC 4、什么是RISC-V 1. RISC 的起源 2. RISC-I 和 RISC-II 3. RISC 发展和商业化 4. RISC-V 的诞生 5、RISC-V生态的特点 6、RISC-V指令集的特点 1. 开源 2. 社区化 3. 设计简洁 4. 模…...

如何使用google.protobuf.Struct?

google.golang.org/protobuf/types/known/structpb 包提供了一种方式来创建和操作 google.protobuf.Struct 类型的数据。google.protobuf.Struct 是一种灵活的数据类型&#xff0c;可以表示任何结构化数据。 以下是如何使用 structpb 包的一些示例&#xff1a; 创建 Struct&a…...

Vue3 + TS + Element-Plus 封装的 Dialog 弹窗组件

弹窗组件中自定义了header 增加了全屏&#xff0c;svg-icon 没有的话可能会报错&#xff0c;换成自己的图标就可以 <template><el-dialog:dialogHeight"dialogHeight":title"dialogTitle"class"dialog min-w-70"v-model"dialogVi…...

大数据技术概述_4.大数据的应用领域

1.制造业的应用 制造业目前正在向信息化和自动化的方向发展。在产品的设计、生产和销售中&#xff0c;越来越多的企业使用计算机辅助设计&#xff08;CAD&#xff09;、计算机辅助制造&#xff08;CAM&#xff09;等软件&#xff0c;数控机床、传感器等设备&#xff0c;物料需求…...

ABB RobotStudio学习记录(一)新建工作站

RobotStudio新建工作站 最近遇到 虚拟示教器和 Rapid 代码不能控制 视图中机械臂的问题&#xff0c;其实是由于机械臂和工作站不匹配。以下是解决方法。 名称版本Robot Studio6.08 新建一个”空工作站“&#xff1b; 在目标位置新建一个目标文件夹 C:\solution\test&#xff0…...

雷达通信一体化(含WCSP2023会议论文集学习)

雷达通信一体化&#xff0c;又称雷达通信融合&#xff08;RADCOM&#xff09;&#xff0c;是一种新兴的技术&#xff0c;它将雷达&#xff08;通常用于探测和跟踪目标&#xff09;和无线通信&#xff08;用于传输信息&#xff09;的功能结合在一起。这种融合技术的主要目标是提…...

特斯拉擎天柱机器人:工厂自动化的未来

随着技术的进步&#xff0c;工业自动化已经逐步进入了一个新的纪元。特斯拉最近公布的擎天柱机器人Optimus的演示&#xff0c;不仅仅展示了一个高科技机器人的能力&#xff0c;更是向我们揭示了未来工厂的可能性。 特斯拉擎天柱机器人的功能展示 马斯克在最新的演示中向我们展…...

【管理咨询宝藏93】大型制造集团数字化转型设计方案

【管理咨询宝藏93】大型制造集团数字化转型设计方案 【格式】PDF版本 【关键词】国际咨询公司、制造型企业转型、数字化转型 【核心观点】 - 235页大型制造型集团数字化转型方案设计&#xff01;细节非常详尽&#xff0c;图表丰富&#xff01; - 系统架构必须采用成熟、具有国…...

【数学建模】天然肠衣搭配问题

2011高教社杯全国大学生数学建模竞赛D题 天然肠衣&#xff08;以下简称肠衣&#xff09;制作加工是我国的一个传统产业&#xff0c;出口量占世界首位。肠衣经过清洗整理后被分割成长度不等的小段&#xff08;原料&#xff09;&#xff0c;进入组装工序。传统的生产方式依靠人工…...

Dockerfile实践java项目

目的&#xff1a;用java项目测试dockerfil部署&#xff08;前提是安装好了docker&#xff09; 部署准备文件如下 1. java项目 java项目demo地址 https://gitee.com/xiaoqu_12/dockerfileDemo.git 或者百度网盘直接下载打包好的jar包 链接&#xff1a;https://pan.baidu.com/s/…...

【管理咨询宝藏96】企业数字化转型的中台战略培训方案

本报告首发于公号“管理咨询宝藏”&#xff0c;如需阅读完整版报告内容&#xff0c;请查阅公号“管理咨询宝藏”。 【管理咨询宝藏96】企业数字化转型的中台战略培训方案 【格式】PDF版本 【关键词】SRM采购、制造型企业转型、数字化转型 【核心观点】 - 数字化转型是指&…...

【webrtc】MessageHandler 3: 基于线程的消息处理:以sctp测试为例

消息处理可以用于模拟发包处理G:\CDN\rtcCli\m98\src\net\dcsctp\socket\dcsctp_socket_network_test.cc 这个实现中,onMessage还是仅对了一种消息进行处理,就是接收则模式下,打印带宽。当然,可能程序有多个消息,分别在不同的onmessage中执行?SctpActor:以一个恒定的速率…...

redisson 使用脚本实现将一个队列的元素弹出并推入另一个队列的原子操作

脚本逻辑&#xff1a; 从队列1弹出元素如果存在值则推入队列2否则返回null RScript script redissonClient.getScript(); final String scriptText """local value redis.call(lpop, KEYS[1]);if value thenredis.call(rpush, KEYS[2], value);return valu…...

写论文缺参考文献?教你一招最快的反向查文献

写文献综述、毕业论文、科研报告时&#xff0c;你是不是也常遇到这些难题&#xff1a;观点明明写得很清楚&#xff0c;却找不到权威文献支撑&#xff1b;文献综述凑不够篇幅&#xff0c;论据来源不充分&#xff1b;逐篇翻数据库筛选文献太耗时&#xff0c;引文格式排版还总出错…...

宝塔面板如何定期清理日志垃圾_设置计划任务自动清理

...

【电动车】基于粒子群算法模拟光伏的电动车充电站(电池健康状况通过CRF、ECL和SoH来量化)附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长毕业设计辅导、数学建模、数据处理、程序设计科研仿真。&#x1f34e;完整代码获取 定制创新 论文复现点击&#xff1a;Matlab科研工作室&#x1f447; 关注我领取海量matlab电子书和数学建模资料 &#x1f3…...

nncase神经网络编译器:从PyTorch模型到K210边缘AI部署全流程详解

1. 项目概述&#xff1a;边缘AI推理的“翻译官”如果你正在嵌入式设备上折腾AI模型部署&#xff0c;大概率会遇到一个让人头疼的问题&#xff1a;辛辛苦苦在PC上训练好的模型&#xff0c;无论是TensorFlow的.pb还是PyTorch的.pth&#xff0c;到了资源捉襟见肘的K210、RV1109这类…...

如何快速打造专业直播画面:OBS StreamFX插件终极指南

如何快速打造专业直播画面&#xff1a;OBS StreamFX插件终极指南 【免费下载链接】obs-StreamFX StreamFX is a plugin for OBS Studio which adds many new effects, filters, sources, transitions and encoders! Be it 3D Transform, Blur, complex Masking, or even custom…...

碳纤维板的导电特性

简 介&#xff1a; 碳纤维板导电性能测试表明&#xff0c;其表面有机膜被刺破后会呈现导电性&#xff0c;电阻值从十几欧姆到几百欧姆不等&#xff0c;且导电性能随测量点位置变化。测试中使用尖头万用表探针穿透表面薄膜&#xff0c;发现同一束碳纤维连接处电阻较低&#xff0…...

前端光标定制:从原生限制到自定义渲染的技术实现

1. 项目概述&#xff1a;从“Cursorify”看现代IDE的插件化革命最近在逛GitHub的时候&#xff0c;又看到了一个挺有意思的项目&#xff0c;叫“cursorify/cursorify”。光看这个名字&#xff0c;你可能会有点懵&#xff0c;因为它和当下另一个非常火的AI编程工具“Cursor”撞名…...

Ship-Score:自动化项目健康度评估工具的设计、实现与工程实践

1. 项目概述与核心价值最近在GitHub上看到一个挺有意思的项目&#xff0c;叫cwklurks/ship-score。乍一看这个标题&#xff0c;你可能会有点摸不着头脑&#xff0c;这“ship-score”到底是个啥&#xff1f;是给船打分&#xff1f;还是某种评分系统&#xff1f;作为一个在软件开…...

立创泰山派RK3566开发环境实战:从交叉编译到高效文件传输

1. 立创泰山派RK3566开发环境搭建全攻略 第一次拿到立创泰山派RK3566开发板时&#xff0c;我和大多数嵌入式开发者一样兴奋又忐忑。这款基于Rockchip RK3566处理器的开发板性能强劲&#xff0c;但配套资料相对分散&#xff0c;特别是对于从其他平台&#xff08;比如我熟悉的IMX…...

Unity问题记录

一个物体在Scene窗口看不见&#xff0c;Game窗口能看见。选中它时&#xff0c;打开Gizmos也看不见身上碰撞体的线框。也无法被射线检测到。换成其他Mesh&#xff1a;Open Asset In Context正常显示&#xff1a;把它Revert回预制体&#xff0c;还是不显示。Ctrl D复制一个&#…...