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

从零开始手写STL库:Stack

从零开始手写STL库–Stack的实现

Gihub链接:miniSTL


文章目录

  • 从零开始手写STL库–Stack的实现
  • 一、stack是什么?
  • 二、stack要包含什么函数
  • 总结


一、stack是什么?

栈是一种后进先出(LIFO,Last In First Out)的数据结构

这意味着最后被压入栈的元素将是第一个被弹出的

这种结构类似于一堆叠放的盘子,只能在顶部添加或移除盘子

底层实现可以使用deque,也可以是list或者vector,取决于使用场景,STL库中默认是deque,也可以修改

这里使用之前实现的myDeque作为底层进行栈的搭建,同样的也是一层封装

二、stack要包含什么函数

必要的三个函数:push, pop 和 top

不过这里留下一个接口,用于修改实现底层

template <typename T, typename Container = myDeque<T> >
class myStack
{
private:Container data;  // 修改container,并且对应地函数名称改一改就可以了public:void push(const T & value){data.push_back(value);}void pop(){if(data.empty()) throw std::runtime_error("Stack is empty!");else data.pop_back();}T& top(){if(data.empty()) throw std::runtime_error("Stack is empty!");else return data[data.getSize()-1];}size_t size(){return data.getSize();}bool empty(){return data.empty();}
};

总结

栈并不会在面试场景中出现太多,更多的是在笔试中,如判断括号是否平衡,如力扣20
在这里插入图片描述
这种情况下就要想到用栈

相关文章:

  • 【质优价廉】GAP9 AI算力处理器赋能智能可听耳机,超低功耗畅享未来音频体验!
  • 【C语言内存管理】第三章 堆内存管理
  • 《ToDesk 云电脑、易腾云、青椒云移动端体验实测:让手机秒变超级电脑》
  • ARM 服务器上安装 OpenEuler (欧拉)
  • 银河麒麟桌面操作系统V10登录闪退问题解决
  • python并发编程实战
  • R 语言 | 取数据框一列子集时,如何保持数据框结构?drop=F
  • 【Python】YOLO牛刀小试:快速实现视频物体检测
  • Windows批处理文件编写指南
  • GEE数据集:全球城市热岛强度(UHII)数据集(更新)
  • 一起了解AI的发展历程和AGI的未来展望
  • 完成UI界面的绘制
  • Unity3D 创建一个人物,实现人物的移动
  • springboot+大数据基于数据挖掘的招聘信息可视化大屏系统【内含源码+文档+部署教程】
  • 大数据-155 Apache Druid 架构与原理详解 数据存储 索引服务 压缩机制
  • “大数据应用场景”之隔壁老王(连载四)
  • CSS 三角实现
  • mac修复ab及siege安装
  • magento 货币换算
  • Next.js之基础概念(二)
  • oschina
  • React16时代,该用什么姿势写 React ?
  • RxJS: 简单入门
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • spring boot下thymeleaf全局静态变量配置
  • 和 || 运算
  • 后端_MYSQL
  • 京东美团研发面经
  • 经典排序算法及其 Java 实现
  • 系统认识JavaScript正则表达式
  • 一些关于Rust在2019年的思考
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 阿里云移动端播放器高级功能介绍
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • ​卜东波研究员:高观点下的少儿计算思维
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • # 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
  • #QT(TCP网络编程-服务端)
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (3)选择元素——(17)练习(Exercises)
  • (4)事件处理——(2)在页面加载的时候执行任务(Performing tasks on page load)...
  • (ISPRS,2021)具有遥感知识图谱的鲁棒深度对齐网络用于零样本和广义零样本遥感图像场景分类
  • (leetcode学习)236. 二叉树的最近公共祖先
  • (阿里云在线播放)基于SpringBoot+Vue前后端分离的在线教育平台项目
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (力扣记录)1448. 统计二叉树中好节点的数目
  • (十六)、把镜像推送到私有化 Docker 仓库
  • (四)React组件、useState、组件样式
  • **python多态
  • .net core docker部署教程和细节问题
  • .net core使用RPC方式进行高效的HTTP服务访问
  • .net mvc actionresult 返回字符串_.NET架构师知识普及