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 …...
C语言对象模型系列(二)从函数指针到虚函数表:彻底理解 C 的多态—— 为什么 device->ops->open() 看起来像 C++?
一、上一篇留下的最大问题 上一篇: C语言对象模型系列(一)为什么 Linux / Android 系统里全是 struct 函数指针?—— 一篇讲透 C 语言如何实现面向对象(OOP) 我们提到: device->ops->…...
使用Taotoken为Claude Code配置稳定API通道避免封号与Token不足
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 使用Taotoken为Claude Code配置稳定API通道避免封号与Token不足 对于依赖Claude Code进行日常开发的工程师而言,一个稳…...
基于51单片机与SIM800A的GPS定位短信上报系统设计详解
1. 系统功能与硬件选型指南 这个项目本质上是个会自己报位置的电子小助手。想象一下,你养了只喜欢乱跑的宠物,或者经常找不到自己的自行车,这个小装置就能派上大用场。它每隔40秒就会自动给主人手机发条短信,告诉你当前所在的精确…...
ThinkPad风扇控制终极指南:TPFanCtrl2让你的笔记本电脑散热更智能
ThinkPad风扇控制终极指南:TPFanCtrl2让你的笔记本电脑散热更智能 【免费下载链接】TPFanCtrl2 ThinkPad Fan Control 2 (Dual Fan) for Windows 10 and 11 项目地址: https://gitcode.com/gh_mirrors/tp/TPFanCtrl2 作为ThinkPad用户,你是否曾经…...
【大模型监控告警黄金标准】:SITS大会首发的7大核心指标与实时告警阈值设定指南
更多请点击: https://intelliparadigm.com 第一章:大模型监控告警方案:SITS大会 在2024年SITS(Scalable Intelligence & Trustworthy Systems)大会上,多家头部AI基础设施厂商联合发布了面向大语言模型…...
手把手教你用VMware Workstation Pro部署FortiWeb 6.3.4虚拟机(附网络配置避坑指南)
零基础实战:VMware Workstation Pro部署FortiWeb 6.3.4全流程解析 在网络安全领域,Web应用防火墙(WAF)已成为保护线上业务不可或缺的防线。FortiWeb作为业界知名的WAF解决方案,其虚拟机版本为学习者提供了低成本体验企…...
CANN Cosmos NPU多卡并行优化
Cosmos 昇腾 NPU 多卡并行优化说明 【免费下载链接】cann-recipes-embodied-intelligence 本项目针对具身智能业务中的典型模型、加速算法,提供基于CANN平台的优化样例 项目地址: https://gitcode.com/cann/cann-recipes-embodied-intelligence 1. 优化概述 …...
抖音内容采集自动化:douyin-downloader如何解决技术用户的批量下载痛点
抖音内容采集自动化:douyin-downloader如何解决技术用户的批量下载痛点 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browse…...
2026年制造业实战:图片格式图纸识别与FAI检验计划自动化指南
在 2026 年的数字化工厂环境中,虽然 3D MBD(基于模型的定义)已广泛普及,但在供应链协同和旧项目维护中,TIFF、PDF 以及高分辨率扫描件等非矢量图纸依然占据了约 30%的份额。如何高效完成图片格式图纸识别(i…...
NeuroRebuild™神经重构技术白皮书——赋能港口动态目标全维度空间还原
NeuroRebuild™神经重构技术白皮书——赋能港口动态目标全维度空间还原 副标题:突破遮挡、弱光感知瓶颈,树立智慧港口复杂场景智能感知新标杆 前言 港口作为高动态、强遮挡、多干扰的复杂作业场景,人员、集卡、AGV、集装箱、船舶等目标…...
