• 大话STL第七期——stack栈


    书接上期,这一期我们来聊聊容器适配器——stack

    文章目录🐅

    什么是stack?

    stack概念

    stack的API


    什么是stack?

    要想搞清楚什么是栈,首先我们先要明白什么是容器适配器,在第一期我有讲解,这里我再简单的重复一遍。

    简单的理解容器适配器,其就是将不适用的序列式容器(包括 vector、deque 和 list)变得适用。即通过封装某个序列式容器,并重新组合该容器中包含的成员函数,使其满足某些特定场景的需要。

    容器适配器本质上还是容器,只不过此容器模板类的实现,利用了大量其它基础容器模板类中已经写好的成员函数。当然,如果必要的话,容器适配器中也可以自创新的成员函数。

    STL 提供了 3 种容器适配器,分别为 stack 栈适配器、queue 队列适配器以及 priority_queue 优先权队列适配器 ,容器适配器底层都采用deque实现,这期我们就来聊聊stack栈。

    stack概念

    stack 栈适配器是一种单端开口的容器,实际上该容器模拟的就是栈存储结构,即无论是向里存数据还是从中取数据,都只能从这一个开口实现操作。

    stack 适配器的开头端通常称为栈顶。由于数据的存和取只能从栈顶处进行操作,因此对于存取数据,stack 适配器有这样的特性,即每次只能访问适配器中位于最顶端的元素,也只有移除 stack 顶部的元素之后,才能访问位于栈中的元素。是先进后出的数据结构。

    注意:

    1. top永远指向栈顶元素
    2. 栈容器没有迭代器,因此不支持遍历行为(容器适配器都不支持迭代器)

    stack的API

    1. stack构造函数
    2. stack st;//stack采用模板类实现,stack对象的默认构造形式
    3. stack(const stack& st);//拷贝构造函数
    4. stack赋值操作
    5. stack &operator=(const stack &st);//重载等号操作符
    6. stack数据存取操作
    7. push(elem);//向栈顶添加元素
    8. pop();//从栈顶移除第一个元素
    9. top();//返回栈顶元素
    10. stack大小操作
    11. empty();//判断堆栈是否为空
    12. size();//返回堆栈的大小

    1. int main()
    2. {
    3. stack<int> s;//容器适配器不支持初始化列表创建
    4. //元素入栈
    5. s.push(10);
    6. s.push(20);
    7. s.push(30);
    8. s.push(40);
    9. s.push(50);
    10. if(!s.empty())
    11. {
    12. cout<<"栈的大小:"<size()<
    13. }
    14. // 元素依次出栈
    15. while(!s.empty())
    16. {
    17. // 打印栈顶元素,打印出:50 40 30 20 10
    18. cout << s.top() << endl;
    19. // 出栈
    20. s.pop();
    21. }
    22. }

     感谢观看,订阅此专栏!

  • 相关阅读:
    Springboot 整合 Socket 实战案例 ,实现 单点发送、广播群发,1对1,1对多
    Java版分布式微服务云开发架构 Spring Cloud+Spring Boot+Mybatis 电子招标采购系统功能清单
    Flutter转换png图片为jpg图片
    PHP:构造函数和析构函数
    使用Python打造微信高效自动化操作教程
    关于nginx升级--存在0day漏洞
    WGCLOUD可以监测防火墙吗?
    CHAPTER 4: DESIGN A RATE LIMITER
    UE5 ChaosVehicles载具 增加方向盘动画 (连载三)
    宝塔面板快速搭建贪吃蛇小游戏web网站 - 无需云服务器,网站发布上线
  • 原文地址:https://blog.csdn.net/weixin_51609435/article/details/126375713