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

【CPP】栈简介及简化模拟实现

CPP栈和队列简单模拟实现

目录

    • 1. 栈的简介
    • 2. 栈简化模拟实现
    • 3. 栈练习题

在这里插入图片描述

1. 栈的简介

是一种 特殊的线性表,具有数据 先进后出 特点。
具体参考:【数据结构】栈

CPP库参考文档:stl_stack

注意:
1.stack本身 不支持迭代器操作
主要原因是因为stack不支持数据的随机访问,必须保证数据先进后出的特点。

2.stack在CPP库中实现为一种 容器适配器
所谓容器适配器,是为了适应不同的数据存储而修改底层的数据结构从而达到优化效率的目的。
参考:C++ STL容器适配器(详解)

2. 栈简化模拟实现

C版简化模拟栈:【数据结构】栈
CPP版简化模拟栈:

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

实际上,stack在库中给的容器缺省值是deque,是一个 顺序表与链表的结合体
deque参考文档:stl_deque
deque底层逻辑简介:【CPP】双端队列简介(deque)

3. 栈练习题

栈算法——最小栈
栈算法——逆波兰表达式求值
栈算法——栈的压入、弹出序列


EOF

相关文章:

  • C语言学习笔记之结构体(一)
  • Android 车载 Audio 中 有关系统按键无声的问题排查小结
  • qi5uxeel算法分析流程记录libmsec.so
  • 14.微信小程序之地理定位功能
  • OSG学习记录
  • uniapp条件编译
  • object对象列表使用sorted函数按照对象的某个字段排序
  • 运维开发.Kubernetes探针与应用
  • 详细介绍运算符重载函数,清晰明了
  • 使用matplotlib绘制折线条形复合图
  • C语言| 求1到100之间所有能被3整除的数之和
  • 小程序发成绩
  • FinalShell 配置SSH密钥登陆
  • 云阅读(小说系统)看小说,管理小说
  • ubuntu安全加固
  • Facebook AccountKit 接入的坑点
  • KMP算法及优化
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • nodejs:开发并发布一个nodejs包
  • node入门
  • React-生命周期杂记
  • Vue2.x学习三:事件处理生命周期钩子
  • 创建一个Struts2项目maven 方式
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 如何编写一个可升级的智能合约
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • !!java web学习笔记(一到五)
  • #1014 : Trie树
  • (BFS)hdoj2377-Bus Pass
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (PHP)设置修改 Apache 文件根目录 (Document Root)(转帖)
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (一)硬件制作--从零开始自制linux掌上电脑(F1C200S) <嵌入式项目>
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • ***检测工具之RKHunter AIDE
  • .gitattributes 文件
  • .NET 4.0中的泛型协变和反变
  • .NET MVC 验证码
  • .net 调用海康SDK以及常见的坑解释
  • .NET 反射的使用
  • .NET/C# 的字符串暂存池
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
  • .net操作Excel出错解决
  • @reference注解_Dubbo配置参考手册之dubbo:reference
  • [2]十道算法题【Java实现】
  • [383] 赎金信 js
  • [C#]获取指定文件夹下的所有文件名(递归)
  • [C++]:for循环for(int num : nums)
  • [Docker]四.Docker部署nodejs项目,部署Mysql,部署Redis,部署Mongodb
  • [flask] flask的基本介绍、flask快速搭建项目并运行
  • [FT]chatglm2微调
  • [leetcode]longest-common-prefix 最长公共前缀
  • [MT8766][Android12] 取消WIFI热点超过10分钟没有连接自动关闭设定