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

C++初阶:STL详解(九)——stacke和queue的模拟实现

✨✨小新课堂开课了,欢迎欢迎~✨✨

🎈🎈养成好习惯,先赞后看哦~🎈🎈

所属专栏:C++:由浅入深篇

小新的主页:编程版小新-CSDN博客

前言:

我们已将了解了 stack和queue的使用,几天就来看一下模拟实现吧。

C++初阶:STL详解(八)——stack和queue的介绍和使用-CSDN博客

一.stack的模拟实现 

前面在stake和queue的介绍和使用里,我们介绍了适配器的相关内容,我们在模拟实现stack和queue的时候都只需要调用duquq容器的各个接口来实现我们stack的接口即可。

函数说明接口说明

stack()构造空的栈

empty()检测stack是否为空

size()返回stack中元素的个数

top()返回栈顶元素的引用

push()将元素val压入stack中

pop()将stack中尾部的元素弹出

namespace xing
{template<class T, class Container = std::deque<T>>class stack{public://入栈void push(const T& x){_con.push_back(x);}//出栈void pop(){_con.pop_back();}//获取栈顶元素T& top(){return _con.back();}const T& top(){return _con.back();}//获取有效元素的个数size_t size(){return _con.size();}//判断栈是否为空bool empty(){return _com.empty();}//交换数据void swap(stack<T,Container> &  s){_con.swap(s._con);}private:Container _con;};
}

二.queue的模拟实现

 queue也是只需要调定deque容器的各个接口来模拟实现自己的接口即可。

函数声明接口说明
queue()构造空的队列
empty()检测队列是否为空,是返回true,否则返回false
size()返回队列中有效元素的个数
front()返回队头元素的引用
back()返回队尾元素的引用
push()在队尾将元素val入队列
pop()将队头元素出队列
namespace fu
{template<class T, class Container = std::deque<T>>class queue{public://入队列void push(const T& x){_que.push_back();}//出队列void pop(){_que.pop_front();}//获取队头元素T& front(){return _que.front();}const T& front(){return _que.front();}//获取队尾数据T& back(){return _que.back();}const T& back(){return _que.back();}//返回有效元素的个数size_t size(){return _que.size();}//判断队列是否为空bool empty(){return _que.empty();}//交换数据void swap(queue<int,Container>& q){_que.swap(q._que);}private:Container _que;};
}

总结:

stack和queue的模拟实现是不是很简单呢,只要借助外力就可以了。

感谢各位大佬的观看,创作不易,还请各位大佬支持~ 

相关文章:

  • kmeans聚类分析 生活使用案例
  • 解决Windows远程桌面 “为安全考虑,已锁定该用户账户,原因是登录尝试或密码更改尝试过多,请稍后片刻再重试,或与系统管理员或技术支持联系“问题
  • Java之多态
  • 关于贪心算法
  • 【系统交付资料】软件文档交付清单整理套用原件(Word,PPT,Excel)
  • 企业如何保护自身通信渠道被黑客攻击
  • 【蚂蚁HR-注册/登录安全分析报告】
  • kubernetes存储入门(kubernetes)
  • 鸿蒙面试题库收集(一):ArkTSArkUI-基础理论
  • 支付宝远程收款api之小荷包跳转码
  • 【算法——KMP】
  • Spring Boot 整合 Keycloak
  • K8s flink-operator 例子
  • 多无人机通信(多机通信)+配置ssh服务
  • opengauss使用遇到的问题,随时更新
  • 【391天】每日项目总结系列128(2018.03.03)
  • 【node学习】协程
  • 【刷算法】从上往下打印二叉树
  • 2017 前端面试准备 - 收藏集 - 掘金
  • 2017-08-04 前端日报
  • django开发-定时任务的使用
  • ECMAScript入门(七)--Module语法
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • HTML-表单
  • JavaScript 事件——“事件类型”中“HTML5事件”的注意要点
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • Mac转Windows的拯救指南
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • node学习系列之简单文件上传
  • storm drpc实例
  • 简单易用的leetcode开发测试工具(npm)
  • 聚簇索引和非聚簇索引
  • 坑!为什么View.startAnimation不起作用?
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 区块链将重新定义世界
  • 使用docker-compose进行多节点部署
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 我这样减少了26.5M Java内存!
  • 因为阿里,他们成了“杭漂”
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • ​HTTP与HTTPS:网络通信的安全卫士
  • ![CDATA[ ]] 是什么东东
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #define、const、typedef的差别
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (10)STL算法之搜索(二) 二分查找
  • (2024)docker-compose实战 (9)部署多项目环境(LAMP+react+vue+redis+mysql+nginx)
  • (2024,RWKV-5/6,RNN,矩阵值注意力状态,数据依赖线性插值,LoRA,多语言分词器)Eagle 和 Finch
  • (3)STL算法之搜索
  • (7)STL算法之交换赋值
  • (javascript)再说document.body.scrollTop的使用问题
  • (undone) MIT6.824 Lecture1 笔记
  • (免费领源码)Python#MySQL图书馆管理系统071718-计算机毕业设计项目选题推荐
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (太强大了) - Linux 性能监控、测试、优化工具