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

使用双端队列deque模拟栈stack

使用双端队列deque模拟栈stack

今天的内容有点简单~

众所周知🤓👆,栈作为一个先进后出的结构,在计算机的世界确实能够发挥很多的作用。

而我们C++祖师爷本贾尼是第一批把这个结构作为实实在在的容器做进std的人~

在这里插入图片描述

那为了更好的了解stack的玩法,我们使用vector和list的结合体----deque双端队列来深入探索stack的前因后果。


首先我们需要明确需要模拟实现stack哪些接口。按照实际需求,我们只需要实现:

● push() 入栈

● pop() 出栈

● top() 获取栈顶元素

● empty() 判空

好,知道了目标我们接下来只用看下结构了。结构挑的好,简介代码少不了~😎👆

那我们来看看,究竟这个结构怎么写会让模拟stack变得如此简单呢?

template<class T,class Container = deque<T>>class stack {public:void push(const T& x){_con.push_back(x);}void pop()    {_con.pop_back();}const T& top()    {return _con.back();}bool empty()    {return _con.empty();}private:Container _con;

写完了。

是的,你没听错,写完了!!

这里最最精妙的玩法就是使用了函数模板来重构了一下deque,之后在对应的接口返回一下封装好的deque接口我们就能很简单的模拟出来了~

如果不信的话我们来使用以下代码测试一下:

void test_stack(){stack<int> st;st.push(1);st.push(2);st.push(3);st.push(4);st.push(5);while (!st.empty())//遍历栈和队列采用不为空的while循环 然后输出栈顶元素后删除即可{cout << st.top() << " ";st.pop();}cout << endl;}

测试之后结果都是对的,

哇,发现真的很香😊✌️~~(完)

http://www.xdnf.cn/news/198901.html

相关文章:

  • 获得ecovadis徽章资格标准是什么?ecovadis评估失败的风险
  • sortablejs + antd-menu 拖拽出重复菜单
  • 【个人理解】MCP server和client二者各自的角色以及发挥的作用
  • 【TS入门笔记4---装饰器】
  • DPanel 一款更适合国人的 Docker 管理工具
  • linux 使用nginx部署vue、react项目
  • 结合大语言模型的机械臂抓取操作学习
  • Python 中支持函数式编程的 operator 与 functools 包
  • 第一节:Linux系统简介
  • Android显示学习笔记本
  • 打造即插即用的企业级云原生平台——KubeSphere 4.1 扩展组件在生产环境的价值全解
  • 解决跨域实现方案
  • 用vite动态导入vue的路由配置
  • 本地部署Qwen-7B实战 vLLM加速推理
  • 网络协议之为什么要分层
  • 论文分享 | 基于区块链和签名的去中心化跨域认证方案
  • 受限字符+环境变量RCE
  • vue3:v-model的原理示例
  • python练习:求数字的阶乘
  • 思科bsp社招面试
  • JavaScript 与 Java 学习笔记
  • day9 python 热力图与子图的绘制
  • MYSQL——时间字段映射Java类型
  • 庙算兵棋推演AI开发初探(7-神经网络训练与评估概述)
  • FTP-网络文件服务器
  • 使用 Vue3 + Webpack 和 Vue3 + Vite 实现微前端架构(基于 Qiankun)
  • iVX 图形化编程如何改写后端开发新范式
  • EXCEL中跨行匹配两组数据
  • 流域生态系统碳排放、碳循环模拟与评估技术应用
  • 【基础篇】static_config采集配置详解