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();
你学会了吗?
相关文章:
c++ STL 之栈—— stack 详解
vector 是 stl 的一个关联容器,名叫“栈”,何为“栈”?其实就是一个数组,但有了数组何必还需栈,这是一个高深的问题。 一、简介 1. 定义 栈,是一个柔性数组(可变长数组),可以变大变小…...
鸿蒙开发接口Ability框架:【(窗口扩展能力)】
窗口扩展能力 WindowExtensionAbility基于ExtensionAbility,WindowExtensionAbility中展示的内容作为一个控件(AbilityComponent)内容展示在其他应用窗口中,实现在一个窗口中展示多个应用程序内容的功能。 说明: 本模块首批接口从API versio…...
AutoCAD中密集的填充打散后消失的问题
有时候在AutoCAD中,图案填充的填充面积过大或填充太过密集时,将该填充打散,也就是执行Explode时,会发现填充图案消失了。 原因是打散后线条太大,系统就不显示了。可以通过设置:HPMAXLINES 值,来…...
基于Matplotlib的模型性能可视化工作
一、项目简介 本项目是科技考古墓葬识别工作的中间过程,因为需要大量复用所以另起一章好了。 主要涉及到数据读取、数据可视化和少量的数据处理过程。 二、相关知识 PandasMatplotlib 三、实验过程 1. 数据探索性分析 1.1 准备工作–导入模块 import pandas…...
KAN网络最全解析——比肩MLP和Transformer?
1 基本思路 1.1 MLP与Spline的优缺点 多层感知器 (MLP)是深度学习的基础理论模块,是目前可用于逼近非线性函数的默认模型,其表征能力已由通用逼近定理证明。但MLP也有明显的缺点,例如在 Transformer中,MLP 的参数量巨大…...
ASP.NET学生信息管理系统
摘 要 本文介绍了在ASP.net环境下采用“自上而下地总体规划,自下而上地应用开发”的策略开发一个管理信息系统的过程。通过分析某一学校学生管理的不足,创建了一套行之有效的计算机管理学生的方案。文章介绍了学生管理信息系统的系统分析部分,…...
图片改大小尺寸怎么改?几招教你搞定图片修改
在社交媒体平台上发布图片时,调整图片的尺寸大小可以确保图片适合平台的要求,不同的社交媒体平台可能对图片的尺寸有不同的要求,通过调整图片尺寸,可以更加完美的展现出来,那么有没有比较简单的图片改大小的方法呢&…...
Scala编程入门:从零开始的完整教程
目录 引言环境准备创建第一个Scala项目基本语法高阶概念进阶资源结语 引言 Scala是一种强大的、静态类型的、多范式编程语言,它结合了面向对象和函数式编程的特点。本教程将指导您如何从零开始学习Scala,并搭建一个简单的开发环境。让我们开始探索Scala…...
Proxmox VE 8 SDN创建VLAN隔离用户网络
作者:田逸(formyz) 在上一篇文章中,我们用SDN的Simple对租户(用户)网络实现了隔离功能,但它有个限制,仅仅能在单个物理节点上进行通信,而不能跨越物理节点(除…...
API低代码平台介绍3-异构数据源的数据查询功能
异构数据源的数据查询功能 在上一篇文章中我们通过API平台定义了一个最基本的数据查询接口,本篇文章我们将上升难度,在原有接口的基础上,实现在MySQL数据库和Oracle数据库同时进行数据查询。 什么场景会需要同时对异构数据源进行查询&…...
【Linux】-网络请求和下载、端口[6]
目录 一、网络请求和下载 1、ping命令 2、wget命令 3、curl命令 二、端口 1、虚拟端口 2、查看端口占用 一、网络请求和下载 1、ping命令 可以通过ping命令,检查指定的网络服务器是否可联通状态 语法:ping [ -c num ] ip或主机名 选项&…...
Github2024-05-10开日报 Top10
根据Github Trendings的统计,今日(2024-05-10统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目4TypeScript项目4JavaScript项目1Lua项目1C项目1Rust项目1Dart项目1 RustDesk: 用Rust编写的开源远…...
2016-2021年全国范围的2.5m分辨率的建筑屋顶数据
一、论文介绍 摘要:大规模且多年的建筑屋顶面积(BRA)地图对于解决政策决策和可持续发展至关重要。此外,作为人类活动的细粒度指标,BRA可以为城市规划和能源模型提供帮助,为人类福祉带来好处。然而…...
Gitea 上传用户签名
在 Gitea 的用户管理部分,有一个 SSH 和 GPG 的选项。 单击这个选项,可以在选项上添加 Key。 Key 的来源 如是 Windows 的用户,可以选择 Kleopatra 这个软件。 通过这个软件生成的 Key 的界面中有一个导出功能。 单击这个导出,…...
【原创】springboot+mysql物资库存管理系统设计与实现
个人主页:程序猿小小杨 个人简介:从事开发多年,Java、Php、Python、前端开发均有涉猎 博客内容:Java项目实战、项目演示、技术分享 文末有作者名片,希望和大家一起共同进步,你只管努力,剩下的交…...
vulnhub靶场之FunBox-5
一.环境搭建 1.靶场描述 Lets separate the script-kids from script-teenies.Hint: The first impression is not always the right one!If you need hints, call me on twitter: 0815R2d2 Have fun...This works better with VirtualBox rather than VMwareThis works bett…...
1分钟搞定Pandas DataFrame创建与索引
1.DataFrame介绍 DataFrame 是一个【表格型】的数据结构,可以看作是【由Series组成的字典】(共用同一个索引)。DataFrame 由按一定顺序排列的多列数据组成。设计初衷是将 Series 的使用场景从一维扩展到多维。DataFrame 既有行索引ÿ…...
【贪心算法】哈夫曼编码Python实现
文章目录 [toc]哈夫曼编码不同编码方式对比前缀码构造哈夫曼编码哈夫曼算法的正确性贪心选择性质证明 最优子结构性质证明 总结 Python实现时间复杂性 哈夫曼编码 哈夫曼编码是广泛用于数据文件压缩的十分有效的编码方法,其压缩率通常为 20 % 20\% 20%到 90 % 90\%…...
【RAG 博客】RAG 应用中的 Routing
Blog:Routing in RAG-Driven Applications ⭐⭐⭐⭐ 根据用户的查询意图,在 RAG 程序内部使用 “Routing the control flow” 可以帮助我们构建更实用强大的 RAG 程序。路由模块的关键实现就是一个 Router,它根据 user query 的查询意图&…...
鸿蒙ArkUI:【编程范式:命令式->声明式】
命令式 简单讲就是需要开发用代码一步一步进行布局,这个过程需要开发全程参与。 开发前请熟悉鸿蒙开发指导文档:gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md点击或者复制转到。 Objective-C ObjectiveC 复制代码 UIView *cardView …...
利用快马平台快速生成javascript交互原型:以动态待办列表为例
利用快马平台快速生成JavaScript交互原型:以动态待办列表为例 最近在尝试快速验证一个待办事项应用的交互设计,发现用传统方式从零开始写代码太耗时了。正好试用了InsCode(快马)平台,只需要描述功能需求,就能自动生成可运行的Jav…...
终极Markdown Viewer:5分钟打造你的浏览器技术文档阅读器
终极Markdown Viewer:5分钟打造你的浏览器技术文档阅读器 【免费下载链接】markdown-viewer Markdown Viewer / Browser Extension 项目地址: https://gitcode.com/gh_mirrors/ma/markdown-viewer 你是否厌倦了在浏览器中查看Markdown文件时格式混乱的体验&a…...
Magisk Root技术实践指南:从决策评估到风险管控的完整解决方案
Magisk Root技术实践指南:从决策评估到风险管控的完整解决方案 【免费下载链接】Magisk The Magic Mask for Android 项目地址: https://gitcode.com/GitHub_Trending/ma/Magisk 一、决策评估:场景化应用与技术选型 1.1 设备Root需求分析矩阵 在…...
长期跳健身操,颈椎会过度屈伸损伤吗
健身爱好者长期跳健身操、跟随节奏做颈部屈伸动作,是运动核心场景,却不知长期如此会让颈 “过度屈伸”,积累屈伸与爆发发力复合损伤。健身操中部分动作要求颈部快速屈伸、左右摆动,爆发性发力导致颈部肌肉与韧带承受瞬间张力&…...
消费级GPU福音:OpenClaw+百川2-13B量化版显存占用实测
消费级GPU福音:OpenClaw百川2-13B量化版显存占用实测 1. 为什么关注显存占用? 去年折腾大模型本地部署时,最头疼的就是显存问题。我的RTX3060显卡只有12GB显存,跑Llama2-13B原版模型时,加载阶段就直接爆显存。直到发…...
塑胶件防裂实践:3D检测亲测有效
行业痛点分析在精密制造领域,塑胶件开裂是长期困扰工程师的顽疾。传统检测手段,如卡尺、三坐标测量机(CMM)或二维影像测量,存在明显局限。它们难以对复杂曲面、内部应力集中区域进行非接触式、全尺寸的量化评估&#x…...
LobeChat效果对比:开源框架与官方ChatGPT的对话体验
LobeChat效果对比:开源框架与官方ChatGPT的对话体验 1. 引言:为什么需要对比开源与官方方案? 在AI聊天机器人领域,开发者常常面临一个关键选择:使用官方提供的ChatGPT服务,还是部署开源框架自行搭建&…...
WarcraftHelper全方位优化指南:解决魔兽争霸III现代适配难题
WarcraftHelper全方位优化指南:解决魔兽争霸III现代适配难题 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 当你在4K显示器上启动魔兽争霸…...
快速部署:在星图AI平台训练PETRV2-BEV模型,支持NuScenes数据集
快速部署:在星图AI平台训练PETRV2-BEV模型,支持NuScenes数据集 1. 环境准备与快速部署 1.1 激活Paddle3D环境 首先需要确保已经创建并激活了Paddle3D的conda环境: conda activate paddle3d_env如果尚未创建该环境,建议先安装M…...
高效判断点在多边形内的算法:Winding Number与Crossing Number的对比与实践
1. 为什么需要判断点在多边形内? 判断一个点是否位于多边形内部是计算几何中的经典问题,这个看似简单的需求在实际开发中随处可见。比如地图应用中判断用户位置是否在某个行政区域内,游戏开发中检测子弹是否击中目标,CAD软件中确定…...
