您的位置:首页 > 游戏 > 游戏 > 平面设计师灵感网站_手机app软件开发_万网建站_网店推广联盟

平面设计师灵感网站_手机app软件开发_万网建站_网店推广联盟

2024/11/17 4:24:17 来源:https://blog.csdn.net/weixin_48013375/article/details/142616518  浏览:    关键词:平面设计师灵感网站_手机app软件开发_万网建站_网店推广联盟
平面设计师灵感网站_手机app软件开发_万网建站_网店推广联盟

从零开始手写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
在这里插入图片描述
这种情况下就要想到用栈

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com