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

c++ STL 之栈—— stack 详解

vector 是 stl 的一个关联容器,名叫“栈”,何为“栈”?其实就是一个数组,但有了数组何必还需栈,这是一个高深的问题。

 一、简介

        1. 定义

        栈,是一个柔性数组(可变长数组),可以变大变小但是和队列不一样,栈是先进后出(FILO),就说栈只能在一端入栈或者出栈。如下,在…一段可以出栈或者入栈。

栈 

        2. 实现

    栈的实现离不开 deque(双向队列),双向队列则使用了 allocator ,即分配器:

_LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX17_Tp* allocate(size_t __n) {if (__n > allocator_traits<allocator>::max_size(*this))__throw_length_error("allocator<T>::allocate(size_t n)"" 'n' exceeds maximum supported size");if (__libcpp_is_constant_evaluated()) {return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp)));} else {return static_cast<_Tp*>(_VSTD::__libcpp_allocate(__n * sizeof(_Tp), _LIBCPP_ALIGNOF(_Tp)));}}

 二、应用

        1.定义

    包含 stack 头文件:

#include <vector>

    和一般模板类一样,先写类型名,再填模板,最后写变量名:

stack <int> MyStack;

三、相关函数

        1. push

    入栈:

MyStack.push(0);

        2. swap

    交换两个 stack:

MyStack.swap(tmp);

         3. pop

    出栈:

MyStack.pop();

          4. size

    查看 stack 大小:

cout << MyStack.size();

          5. top

    返回栈顶元素:

cout << MyStack.top();

你学会了吗?

http://www.lryc.cn/news/346543.html

相关文章:

  • 鸿蒙开发接口Ability框架:【(窗口扩展能力)】
  • AutoCAD中密集的填充打散后消失的问题
  • 基于Matplotlib的模型性能可视化工作
  • KAN网络最全解析——比肩MLP和Transformer?
  • ASP.NET学生信息管理系统
  • 图片改大小尺寸怎么改?几招教你搞定图片修改
  • Scala编程入门:从零开始的完整教程
  • Proxmox VE 8 SDN创建VLAN隔离用户网络
  • API低代码平台介绍3-异构数据源的数据查询功能
  • 【Linux】-网络请求和下载、端口[6]
  • Github2024-05-10开日报 Top10
  • 2016-2021年全国范围的2.5m分辨率的建筑屋顶数据
  • Gitea 上传用户签名
  • 【原创】springboot+mysql物资库存管理系统设计与实现
  • vulnhub靶场之FunBox-5
  • 1分钟搞定Pandas DataFrame创建与索引
  • 【贪心算法】哈夫曼编码Python实现
  • 【RAG 博客】RAG 应用中的 Routing
  • 鸿蒙ArkUI:【编程范式:命令式->声明式】
  • 【练习2】
  • oracle 新_多种块大小的支持9i
  • Collections工具类
  • java-函数式编程-jdk
  • qiankun实现微前端,vue3为主应用,分别引入vue2和vue3微应用
  • 写了 1000 条 Prompt 之后,我总结出了这 9 个框架【建议收藏】
  • 事件代理 浅谈
  • 一对多在线教育系统,疫情后,在线教育有哪些变革?
  • RabbitMQ(安装配置以及与SpringBoot整合)
  • JUC下的BlockingQueue详解
  • ChatGPT理论分析