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

网络工程师自学网站网页设计导航

网络工程师自学网站,网页设计导航,郑州网站开发公司,网站添加地图导航s t a c k stack stack 是一种容器适配器,设计为先进后出( F i r s t I n L a s t O u t , F I L O First\ In\ Last\ Out,\ FILO First In Last Out, FILO)的数据结构,只有一个出口,将元素推入栈的操作称为 p u s h …

s t a c k stack stack 是一种容器适配器,设计为先进后出( F i r s t I n L a s t O u t , F I L O First\ In\ Last\ Out,\ FILO First In Last Out, FILO)的数据结构,只有一个出口,将元素推入栈的操作称为 p u s h push push, 将元素推出栈的操作称为 p o p pop pop。因此,只要能满足栈结构要求的容器都可以作为 s t a c k stack stack 的底层容器。同时,由于 s t a c k stack stack 不允许有遍历行为(只能取栈顶元素),因此 s t a c k stack stack 没有迭代器

文章目录

  • 前言 —— 容器适配器
  • 一、stack 的介绍
  • 二、stack 的使用(常用接口)
  • 三、stack 的模拟实现
  • 四、STL 标准库中的 stack
    • 1. 底层结构
    • 2. 模拟实现
  • 总结


前言 —— 容器适配器

适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结),该种模式是将一个类的接口转换成客户希望的另外一个接口

在这里插入图片描述


一、stack 的介绍

关于 s t a c k stack stack 的介绍,建议去查 C C C++ 官方文档: s t a c k stack stack 的文档介绍

在这里插入图片描述

以下为 s t a c k stack stack 的官方文档介绍:

  1. 是一种容器适配器,专门设计用于在 L I F O LIFO LIFO 上下文(后进先出)中运行,其中元素仅从容器的一端插入和提取。

  2. 栈作为容器适配器实现,容器适配器是使用特定容器类的封装对象作为其基础容器的类,提供一组特定的成员函数来访问其元素。元素从特定容器的 “ b a c k ” “back” back 推送 / / /弹出,这称为栈的顶部

  3. 底层容器可以是标准容器类模板之一,也可以是其他专门设计的容器类。该底层容器应至少支持以下操作:
    (1)empty:检测栈是否为空。
    (2)size:返回栈中有效元素的个数。
    (3)back:返回栈顶元素的引用。
    (4)push_back:在栈顶压栈。
    (5)pop_back:在栈顶出栈。

  4. 标准容器类 d e q u e deque deque v e c t o r vector vector 满足了这些要求。默认情况下,如果没有为 s t a c k stack stack 实例化指定容器类,则使用标准容器。

在这里插入图片描述


二、stack 的使用(常用接口)

下面只列举了 s t a c k stack stack 最常用的几个接口,更多详细信息可以自行查官方文档: s t a c k stack stack

可以看出 s t a c k stack stack v e c t o r vector vector l i s t list list 都不一样,第二个模板参数从 alloc 变为了 Container,缺省值说明标准库里的 s t a c k stack stack 默认 d e q u e deque deque 容器的容器适配器
t e m p l a t e < c l a s s T , c l a s s C o n t a i n e r = d e q u e < T > > c l a s s s t a c k ; template <class\ T, class\ Container = deque<T> > class\ stack; template<class T,class Container=deque<T>>class stack;

函数说明接口说明
s t a c k ( ) stack() stack()构造空的栈
e m p t y ( ) empty() empty()检测 s t a c k stack stack 是否为空
s i z e ( ) size() size()返回 s t a c k stack stack 中元素的个数
t o p ( ) top() top()返回栈顶元素的引用
p u s h ( ) push() push()将元素 v a l val val 压入 s t a c k stack stack
p o p ( ) pop() pop() s t a c k stack stack 中尾部的元素弹出

三、stack 的模拟实现

栈的接口中可以看出,栈实际是一种特殊的 v e c t o r vector vector,因此使用 v e c t o r vector vector 完全可以模拟实现 s t a c k stack stack

也就是说, s t a c k stack stack 作为容器适配器,是直接封装其他容器的部分功能,只要能实现 s t a c k stack stack 的基本功能,就能够作为 s t a c k stack stack底层实现容器,如: v e c t o r vector vector l i s t list list d e q u e deque deque

这里使用 v e c t o r vector vector 容器为底层默认容器来模拟实现的 s t a c k stack stack

#include<vector>using namespace std;namespace ybc
{//用 Container 适配转换出 stacktemplate<class T, class Container = vector<T>> //给vector缺省值class stack{public:void push(const T& x){_con.push_back(x);}void pop(){_con.pop_back();}const T& top() const{return _con.back();}size_t size() const{return _con.size();}bool empty() const{return _con.empty();}private:Container _con;	//底层可以使用 vector/list/deque 容器};
}

注意:类模板实例化时,会按需实例化:使用了哪些成员函数,就实例化哪些成员函数(不会全实例化)。


四、STL 标准库中的 stack

1. 底层结构

虽然 s t a c k stack stack 中也可以存放元素,但在 S T L STL STL 中并没有将其划分在容器的行列,而是将其称为容器适配器,这是因为 s t a c k stack stack 只是对其他容器的接口进行了包装 S T L STL STL s t a c k stack stack 默认使用 d e q u e deque deque

在这里插入图片描述

关于 d e q u e deque deque 的介绍可以看我的这篇博客:【STL】 d e q u e deque deque(了解),仅供了解,这里不过多介绍。

2. 模拟实现

#include<vector>
#include<list>
#include<deque>using namespace std;namespace ybc
{//template<class T, class Con = vector<T>>//template<class T, class Con = list<T>>template<class T, class Con = deque<T>>class stack{public:stack() {}void push(const T& x) {_c.push_back(x);}void pop() {_c.pop_back(); }T& top() {return _c.back();}const T& top() const {return _c.back();}size_t size() const {return _c.size();}bool empty() const {return _c.empty();}private:Con _c;};
}

总结

以某种既有容器为底部结构将其接口改变,使其符合 “ “ 先进后出 ” ” 的特性,形成一个 s t a c k stack stack,是很容易做到的。 d e q u e deque deque 是双向开口的数据结构,若以 d e q u e deque deque 为底部结构并封闭其头端开口,便轻而易举地形成了一个 s t a c k stack stack。因此, S G I SGI SGI S T L STL STL 便以 d e q u e deque deque 作为默认情况下的 s t a c k stack stack 底部结构。

由于 s t a c k stack stack 是以底部容器完成其所有工作,而具有这种 “ “ 修改某物接口,形成另一种风貌 ” ” 的性质的,称为 a d a p t e r adapter adapter适配器),因此, S T L STL STL s t a c k stack stack 往往不被归类为 c o n t a i n e r container container容器),而被归类为 c o n t a i n e r a d a p t e r container\ adapter container adapter容器适配器)。

http://www.dtcms.com/wzjs/537079.html

相关文章:

  • 设计师网站pintset网站模板下载工具
  • 河北网站seo地址亿赐客网站
  • 网站主机设置方法金数据可以做网站吗
  • 企业大型网站开发引流推广广告怎么写
  • 网站建设框架模板下载上海发布官网最新版
  • c2c平台的具体购物流程吉安百度seo
  • 北京网站网页设计深圳高端设计公司有哪些
  • 泉州专业网站建设哪家好怎么做移动端网站计算像素
  • 钓鱼网站制作教程wordpress模版如何使用教程
  • 网站备案都审核什么wordpress默认后台
  • 在哪个网站订酒店做申根签证网站怎么添加模块
  • 服务类网站免费建站wordpress 搜索词调用
  • 如何用群晖做自己的网站青岛企业网站制作公司
  • 网站建设与管理工作内容app和网站开发的成本
  • 安庆网站建设先做它个天猫网站
  • 怎样建立营销网站铁道部建设监理协会网站
  • 百度蜘蛛站长服务平台网站增加点击率 怎样做
  • 网站登录按纽是灰色的网络平台怎么创建需要多少钱
  • 果洛州网站建设公司如何建设自己的企业网站
  • vs做的网站源代码聊天网站建设
  • 建设银行贷款业务网站CP网站建设搭建需要多少钱
  • 做网站什么都不懂 怎么做旅游海外推广网站建设方案
  • 网站建设有哪些问题公司部门解散赔偿标准
  • 网站建设推广代理商百度指数总结
  • 求做外宣图网站杭州网站建设就找蓝韵网络
  • 肉菜配送网站建设中天建设集团门户网站
  • 英文站用wordpress网站建设广告宣传素材
  • 中国建设银行社保卡网站wordpress前端注册
  • 深圳沙井做网站东莞做网站要多少钱
  • 做配单ic去什么网站好公众号文章模板素材