C++容器——stack

stack容器

C++的std::stack容器是一个基于适配器模板类实现的容器适配器,它提供了一种后进先出的数据结构,即栈。


特点:

1.后进先出:元素在栈容器中按照后进先出的顺序管理,最后放入的元素将会最先被取出。

2.只能从栈顶操作:stack容器只允许在栈顶进行插入和删除操作,不能在中间或底部插入或删除元素。

3.功能简单:stack容器提供的操作相对简单,只包括推入元素、弹出元素、访问栈顶元素等基本操作。

4.不支持迭代器:stack不提供迭代器接口,因此不能像序列容器(如vector和deque)那样通过迭代器进行元素访问。

5.固定大小:stack容器没有固定的大小限制,但在底层实现上可能会有一定的容量限制,需要根据需求选择合适的实现方式。

6.没有排序功能:stack容器并不对元素进行排序,元素按照插入的顺序保持在栈中。


stack容器的使用 

  1. 加入头文件<stack>
  2. stack容器定义
  3. stack容器使用 

加入头文件 

#include<stack>

 定义无需初始化

在使用std::stack容器时,不需要显式指定容器的大小。当向std::stack中压入元素时,如果底层容器的大小不够,它会自动调整大小来适应新增的元素。这种自动调整大小的特性使得使用std::stack容器更加方便和灵活。

#include <iostream>
#include <stack>int main() 
{std::stack<int> first;return 0;
}

使用

压栈(push):使用push()函数向栈顶添加元素。

弹栈(pop):使用pop()函数移除栈顶元素,无返回值。

访问栈顶(top):使用top()函数访问但不移除栈顶元素。注意,如果栈为空,调用top()是未定义行为 

empty():检查栈是否为空,返回布尔值。

size():返回栈中元素的数量。

#include <iostream>
#include <stack>int main() 
{std::stack<int> in;// 压栈(Push)in.push(10);in.push(20);in.push(30);// 访问栈顶(top)std::cout << "栈顶元素:" << in.top() << std::endl;// 弹栈(pop)in.pop(); // 移除栈顶元素std::cout << "弹栈后的栈顶元素:" << in.top() << std::endl;// 输出栈中的元素std::cout << "栈中的元素:";while (!in.empty()) {std::cout << in.top() << " ";in.pop(); // 移除栈顶元素}std::cout << std::endl;return 0;
}//输出结果是
栈顶元素:30
弹栈后的栈顶元素:20
栈中的元素:20 10

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/9352.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

10. hive中随机抽样数据:order by limit 对比 distribute by rand limit

文章目录 1. ORDER BY LIMIT2. DISTRIBUTE BY RAND() 配合 LIMIT考虑因素&#xff1a; 在Hive中随机抽取一部分数据时&#xff0c;选择使用 ORDER BY LIMIT 还是 DISTRIBUTE BY RAND() 配合 LIMIT 取决于具体的应用场景和需求。下面是两种方法的比较&#xff1a; 1. ORDER BY …

#01【面试问题整理】嵌入式软件工程师

前言 本系列文章预计应该也许可能大概会持续更新一段时间。笔者将整理网络上各个面试题目,在此系列中。如有错误可以私信、评论指正,多多包涵~谢谢~ 本期参考文章如下: 【八股文】嵌入式软件工程师-2025校招必备-详细整理_嵌入式软件开发八股-CSDN博客 1、 volatil…

面试前的刷题,要有充分的准备

大家面试前都会刷题背题,你是怎么背的?网上随便找找,背一背?找个大佬的博客或者视频,看一看,记一记?还是整理整理,发布到某个笔记上?又或者是自己写个博客,或者记录个印象笔记?这一节,我分享一些面试前刷题的心得体会。 目录 1 离职前的数据准备 2 离职前的面试题…

盲盒一番赏小程序:探索未知,开启神秘宝藏之旅

开启神秘之门&#xff0c;探索未知的乐趣 在繁忙的生活中&#xff0c;我们渴望一丝丝未知带来的惊喜与乐趣。盲盒一番赏小程序&#xff0c;正是为了满足您这种探索未知的欲望而诞生。它不仅仅是一个购物平台&#xff0c;更是一个充满神秘与惊喜的宝藏世界。 精选好物&#xf…

诊所医院超常规运营管理思维课程

本课程旨在引领医疗机构管理者超越传统思维&#xff0c;探索创新运营管理策略。学员将学习领先的医疗管理理念、创新的运营模式&#xff0c;以及如何应对挑战和变革。课程内容涵盖战略规划、资源优化、服务创新等&#xff0c;帮助管理者提升运营效率&#xff0c;提供更优质的医…

【SpringBoot整合系列】SpringBoot整合RabbitMQ-基本使用

目录 SpringtBoot整合RabbitMQ1.依赖2.配置RabbitMQ的7种模式1.简单模式&#xff08;Hello World&#xff09;应用场景代码示例 2.工作队列模式&#xff08;Work queues&#xff09;应用场景代码示例手动 ack代码示例 3.订阅模式&#xff08;Publish/Subscribe&#xff09;应用…

Xilinx FPGA开发指南-7系列FPGA配置引脚定义(草稿)

目录 配置引脚定义表 配置引脚定义表 配置引脚定义表 引脚名称BANK类型方向描述CFGBVS0专用引脚Input配置组电压选择CFGBVS确定专用配置组0的I/O电压工作范围和电压容限&#xff0c;以及AMD Spartan™-7,AMD Artix™-7和AMD Kintex™-7系列中银行14和15的多功能配置引脚。CFGB…

远程开机与远程唤醒BIOS设置

远程开机与远程唤醒BIOS设置 在现代计算机应用中&#xff0c;远程管理和控制已成为许多企业和个人的基本需求。其中&#xff0c;远程开机和远程唤醒是两项非常实用的功能。要实现这些功能&#xff0c;通常需要在计算机的BIOS中进行一些特定的设置。以下是对远程开机和远程唤醒…

VS2019下使用MFC完成科技项目管理系统

背景&#xff1a; &#xff08;一&#xff09;实验目的 通过该实验&#xff0c;使学生掌握windows程序设计的基本方法。了解科技项目组织管理的主要内容和管理方面的基本常识&#xff0c;熟练应用数据库知识&#xff0c;通过处理过程对计算机软件系统工作原理的进一步理解&…

Python批量备份华为设备配置到FTP服务器

Excel表格存放交换机信息&#xff1a; 备份文件夹效果图&#xff1a; Windows系统配置计划任务定时执行python脚本&#xff1a; Program/script&#xff1a;C:\Python\python.exe Add arguments (optional)&#xff1a; D:\Python_PycharmProjects\JunLan_pythonProje…

verilog中输入序列不连续的序列检测

编写一个序列检测模块&#xff0c;输入信号端口为data&#xff0c;表示数据有效的指示信号端口为data_valid。当data_valid信号为高时&#xff0c;表示此刻的输入信号data有效&#xff0c;参与序列检测&#xff1b;当data_valid为低时&#xff0c;data无效&#xff0c;抛弃该时…

在 Flutter 中创建可按压缩小视图

在 Flutter 应用程序中&#xff0c;经常会遇到需要在用户点击时进行缩放的情况&#xff0c;比如图片预览或者按钮点击效果。为了方便地实现这一功能&#xff0c;我们可以创建一个名为 TapDownZoomOutView 的可重用小部件&#xff0c;它能够根据用户的点击情况实现缩放效果。 介…

如何通过wifi网络将串口数据发送到多个设备

摘要&#xff1a;当lora电台的速率无法满足高速传输时&#xff0c;可以考虑用“串口服务器”。本文介绍一下如何使用TP-LINK的TL-CPE300D实现一对多的数据发送。 当前也有使用lora电台的&#xff0c;但是lora电台支持的速率有限&#xff0c;可能最大支持到9600&#xff0c;甚至…

数据库课程设计《基于Spring Boot + MyBatis + MySQL 实现Java医院药品管理系统》+源代码

文章目录 源代码下载地址项目介绍项目功能 项目备注源代码下载地址 源代码下载地址 点击这里下载源码 项目介绍 项目功能 库存管理 登记入库的药品。 登记出库的药品。 每日检查库存下限&#xff0c;报警。 每日检查过期的药品&#xff0c;报警并做退回销毁处理。 对有问题…

TC3xx MTU概述(1)

目录 1.MTU基本功能 2.MBIST 3.小结 1.MTU基本功能 在TC3xx中&#xff0c;MTU(Memory Unit Test)被用来管理控制芯片内部各种RAM的测试、初始化和数据完整性检查。 既然MTU主要是管理和控制&#xff0c;那干活的想必另有他人。所以在该平台中&#xff0c;我们可以看到SRAM…

2.扩散模型的正向过程

很早之前就新建了一个专栏从0开始弃坑扩散模型,但发了一篇文章就没有继续这一系列&#xff0c;在这个AIGC的时代&#xff0c;于是我准备重启这个专栏。 整个专栏的学习顺序可以见这篇汇总文章 很多时候我们看到一篇文章很长&#xff0c;难免会心生胆怯&#xff0c;所以我将这些…

Electron-Vue 脚手架避坑实录,兼容Win11,升级electron22,清理控制台错误

去年的还是有用的&#xff0c;大家继续看&#xff0c;今年再补充一些Electron-Vue 异常处理方案 M1 和 Window10_electron异常处理-CSDN博客 代码gitee.com地址 electron-demo: electron 22 初始代码开发和讲解 升级electron为22版本&#xff08;这个版本承上启下&#xff0c…

怎么用git在暂存区(stage)中移除不需要提交(commit)的文件?

2024年5月9日&#xff0c;周四上午 非常简单&#xff0c;用下面这条命令就可以了 git rm --cached <file>注&#xff1a;这条命令不会把文件从文件夹中删除&#xff0c;只会把文件从暂存区中移除出去 实战

《Python编程从入门到实践》day23

# 昨日知识点回顾 操控飞船移动发射子弹&#xff0c;删除屏幕之外的子弹 #今日知识点学习 第13章 外星人 13.1 项目回顾 项目添加新功能前审核既有代码&#xff0c;对混乱或低效的代码进行清理 13.2 创建第一个外星人 13.2.1 创建Alien类 # alien.py imp…

影响视频视觉质量的因素——各类视觉伪影

模糊效应&#xff08;Blurring Artifact&#xff09; 图像模糊&#xff08;blurring&#xff09;&#xff1a;平滑图像的细节和边缘产生的现象&#xff0c;模糊对于图像来说&#xff0c;是一个低通滤波器&#xff08;low-pass filter&#xff09;。一般而言&#xff0c;用户更…