【C++】STL中stack的用法及模拟实现

news/2025/2/11 18:01:46/

目录

  • 一、stack的简介
  • 二、stack的使用
  • 三、stack的模拟实现

一、stack的简介

  1. stack是一种容器适配器,专门用在后进先出操作的上下文中环境中,其中的元素只允许从容器固定的一端进行插入和删除操作。
  2. stack是作为容器适配器来实现的,容器适配器是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,元素是从特定容器的尾部被压入和弹出,即栈顶。
  3. stack的底层容器可以是任何标准的容器类模版或者一些其他特定的容器类,这些容器都应该支持以下的操作:
      1. empty:判空操作
      2. back:获取尾部元素操作
      3. push_back:尾部插入元素操作
      4. pop_back:尾部删除元素操作
  4. 标准容器vector、deque、list都符合这些需求,在默认情况下,stack指定特定的底层容器为deque

在这里插入图片描述

二、stack的使用

template <class T, class Container = deque > class stack;

函数说明接口说明
stack()构造空的栈
empty()检测stack是否为空
size()返回stack中元素的个数
top()返回栈顶元素的引用
push()将元素val压入stack中
pop()将stack中尾部的元素弹出

bool empty() const;
size_type size() const;
value_type& top();
const value_type& top() const;
void push (const value_type& val);
void pop();

代码实现:

void TestStack1()
{stack<int, vector<int>> st;//stack<int, list<int>> st;//stack<int> st;st.push(1);st.push(2);st.push(3);st.push(4);st.push(5);st.push(6);cout << "stack中的元素个数:" << st.size() << endl;while (!st.empty()){cout << st.top() << " ";st.pop();}
}

三、stack的模拟实现

namespace hxj
{template<class T,class Container=vector<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 _con.empty();}private:Container _con;};
}

http://www.ppmy.cn/news/88303.html

相关文章

C++——模板初阶

文章目录 一.泛型编程二.函数模板1.函数模板的概念2.函数模板的格式3.函数模板的原理4.函数模板的实例化&#xff08;1&#xff09;隐式实例化&#xff08;2&#xff09;显式实例化 5.模板参数的匹配原 三.类模板1.类模板的定义格式2.类模板的实例化 前言&#xff1a; 本章我们…

开源日志监控采集平台ELKF

---------------------- FilebeatELK 部署 ---------------------- Node1节点&#xff08;2C/4G&#xff09;&#xff1a;node1/192.168.179.20 Elasticsearch Node2节点&#xff08;2C/4G&#xff09;&#xff1a;node2/192.168.179.23 …

剑指 Offer 20. 表示数值的字符串

剑指 Offer 20. 表示数值的字符串 这是题目给出的定义&#xff0c;我们只需要按照题目给出的定义完成函数的编写即可 数值&#xff08;按顺序&#xff09;可以分成以下几个部分&#xff1a; 若干空格一个 小数 或者 整数&#xff08;可选&#xff09;一个 e 或 E &#xff0c;…

vue 弹窗实现方法

Vue实现弹窗的方法有很多种&#xff0c;这里给出一个简单的示例&#xff1a; 1. 首先&#xff0c;在Vue项目中创建一个名为Modal.vue的组件文件&#xff1a; html <template> <div class"modal-mask" v-show"visible" click.self"close"…

plt、fig、axes、axis的含义

plt import matplotlib.pyplot as plt figure,axes与axis 如果将Matplotlib绘图和我们平常画画相类比&#xff0c;可以把Figure想象成一张纸&#xff08;一般被称之为画布&#xff09;&#xff0c;Axes代表的则是纸中的一片区域&#xff08;当然可以有多个区域&#xff0c;这…

零代码平台如何助力企业数字化,零代码会把IT人员淘汰掉吗

据研究&#xff0c;国内企业超过 70% 以上的业务管理需求得不到 IT 排期。 由于爆发的业务需求无法被满足&#xff0c;企业的数字化转型过程中充满着危险的 IT 失能陷阱。 01 IT面临的信息化现状 业务管理需求爆发&#xff1a; 在经济增速下行趋势下&#xff0c;企业面临更…

ChatGPT:AI时代的创造力激活

《你好&#xff0c;ChatGPT》是一本深入探索人工智能&#xff08;AI&#xff09;领域的畅销书籍&#xff0c;它以ChatGPT为切入点&#xff0c;系统地介绍了AI和AIGC的基础概念、技术原理、应用领域和未来展望。这本书通俗易懂&#xff0c;由浅入深&#xff0c;层层递进&#xf…

【Unity】Animation Playable Bug、限制及解决方案汇总

【Unity】Animation Playable Bug、限制及解决方案汇总 先自荐一下我的PlayableGraph监控工具&#xff0c;比官方的Visualizer好用得多&#xff1a;https://github.com/SolarianZ/UnityPlayableGraphMonitorTool Bug 文中提及的各项Bug及解决方案的最小化测试工程可在此仓库下…