STL--栈(stack)

在这里插入图片描述
stack 栈是一种只在一端(栈顶)进行数据插入(入栈)和删除(出栈)的数据结构,它满足后进先出(LIFO)的特性。
使用push(入栈)将数据放入stack,使用pop(出栈)将元素从容器中移除。

在这里插入图片描述

使用stack,必须包含头文件:

#include<stack>

在头文件中,class stack定义如下:

namespace std{template <typename T,typename Container = deque<T>>class stack;
}

第一个参数T代表类型,第二个参数用来定义stack内部存放数据的容器,默认为deque。之所以选择deque而非vector,是因为deque移除数据时可能会释放内存,并在插入数据需要扩容时不需要复制所有的数据。
例如,以下定义了一个元素类型为整数的 stack:

std::stack<int> st;

stack 只是很单纯地把各项操作转化为内部容器对应的函数调用。你可以使用任何支持 back()、push_back()和pop_back()成员函数的标准容器支持 stack。例如你可以使用 vector或list 来存放数据:

stack<int,vector<int>> st;//整型栈,使用vector存放数据
注意:forword_lis和array不可以作为其容器

定义及初始化


#include <iostream>
#include <stack>
#include <vector>
#include <list>
using namespace std;int main()
{stack <char> s1;//创建一个默认的栈,最常用stack <char, deque<char> > s2;//显示创建用deque保存数据的栈,和s1等价stack <int, vector<int> > s3;//创建用vector保存数据的栈stack <int, list<int> > s4;//创建用list保存数据的栈return 0;
}

empty成员函数
判断栈是否为空。

pop成员函数
出栈函数,删除栈顶元素。

push成员函数
入栈函数,往栈顶添加数据

size成员函数
返回栈的数据个数

top成员函数
返回栈顶元素的引用。

#include <iostream>
#include <stack>
using namespace std;int main()
{stack<int>s1;//创建一个空的int栈if (s1.empty())cout << "s1是空的" << endl;for(int i=0;i<5;i++)//入栈0,1,2,3,4s1.push(i);cout << "入栈0~4后,栈内的数据个数:" << s1.size() << endl;cout << "出栈:" << endl;while (!s1.empty())//只要栈不空,循环继续{cout << s1.top() << endl;//输出栈顶元素的值s1.pop();//出栈,删除栈顶元素的值}return 0;
}

本篇完!

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

关闭这八个电脑设置,保护个人隐私

你知道吗&#xff1f;电脑可能一直在偷窥你的小秘密。朋友们&#xff0c;一定要记得关闭这8个电脑设置哦&#xff0c;这样可以有效地保护我们的个人隐私。 按住键盘Windows键加i键&#xff0c;快速打开Windows设置。然后点击隐私选项。 我们来看基本的常规设置。里面有四个设置…

如何在 PostgreSQL 中确保数据的异地备份安全性?

文章目录 一、备份策略1. 全量备份与增量备份相结合2. 定义合理的备份周期3. 选择合适的备份时间 二、加密备份数据1. 使用 PostgreSQL 的内置加密功能2. 使用第三方加密工具 三、安全的传输方式1. SSH 隧道2. SFTP3. VPN 连接 四、异地存储的安全性1. 云存储服务2. 内部存储设…

(十六)视图变换 正交投影 透视投影

视图变换 代码实验 #include <glad/glad.h>//glad必须在glfw头文件之前包含 #include <GLFW/glfw3.h> #include <iostream> #define STB_IMAGE_IMPLEMENTATION #include "stb_image.h"//GLM #include <glm/glm.hpp> #include <glm/gtc/m…

Spark实现电商消费者画像案例

作者/朱季谦 故事得从这一张图开始说起—— 可怜的打工人准备下班时&#xff0c;突然收到领导发来的一份电商消费者样本数据&#xff0c;数据内容是这样的—— 消费者姓名&#xff5c;年龄&#xff5c;性别&#xff5c;薪资&#xff5c;消费偏好&#xff5c;消费领域&#x…

从另一种简单的形式理解扩散模型原理和代码实践

正文 我们先来看一个简单的case。 有一组坐落在x轴的点集&#xff0c;最小和最大的数值为-4和4。我用浅绿色将这些点标记&#xff0c;记作 X 0 X_0 X0​ X 0 ∈ { ( − 4 , 0 ) , ( − 3 , 0 ) , ( − 2 , 0 ) , ( − 1 , 0 ) , ( 0 , 0 ) , ( 1 , 0 ) , ( 2 , 0 ) , ( 3 ,…

Java面试八股之MySQL的redo log和undo log

MySQL的redo log和undo log 在MySQL的InnoDB存储引擎中&#xff0c;redo log和undo log是两种重要的日志&#xff0c;它们各自服务于不同的目的&#xff0c;对数据库的事务处理和恢复机制至关重要。 Redo Log&#xff08;重做日志&#xff09; 功能 redo log的主要作用是确…

js ES6 part1

听了介绍感觉就是把js在oop的使用 作用域 作用域&#xff08;scope&#xff09;规定了变量能够被访问的“范围”&#xff0c;离开了这个“范围”变量便不能被访问&#xff0c; 作用域分为&#xff1a; 局部作用域、 全局作用域 1. 函数作用域&#xff1a; 在函数内部声明的…

《梦醒蝶飞:释放Excel函数与公式的力量》10.1.1函数简介

10.1.1函数简介 BIN2DEC函数是Excel中用于将二进制数转换为十进制数的函数。它在处理二进制数时非常有用&#xff0c;尤其是在电子工程、计算机科学等领域。 10.1.2函数语法&#xff1a; BIN2DEC(number) number&#xff1a;这是要转换的二进制数&#xff0c;必须是以字符串…

智慧之旅不止步!凌恩生物6月客户文章累计IF>531!

2024年6月&#xff0c;凌恩生物助力客户发表文章75篇&#xff0c;累计影响因子531.8分&#xff0c;其中包括Nature Microbiology、Nature Communications、Microbiome、Chemical Engineering Journal、Journal of Hazardous Materials、Water Research等期刊文章。此次收录的文…

激光干涉仪可以完成哪些测量:全面应用解析

在高端制造领域&#xff0c;精度是衡量产品质量的关键指标之一。激光干涉仪作为一项高精度测量技术&#xff0c;其应用广泛&#xff0c;对于提升产品制造精度具有重要意义。 线性测量&#xff1a;精确定位的基础 激光干涉仪采用迈克尔逊干涉原理&#xff0c;实现线性测量。该…

Spark SQL中的正则表达式应用

正则表达式是一种强大的文本处理工具,在Spark SQL中也得到了广泛支持。本文将介绍Spark SQL中使用正则表达式的主要方法和常见场景。 目录 1. 正则表达式函数1.1 regexp_extract1.2 regexp_replace1.3 regexp_like 2. 在WHERE子句中使用正则表达式3. 在GROUP BY中使用正则表达…

【光伏仿真系统】光伏设计的基本步骤

随着全球对可再生能源需求的不断增长&#xff0c;光伏发电作为一种清洁、可再生的能源形式&#xff0c;正日益受到重视。光伏设计是确保光伏系统高效、安全、经济运行的关键环节&#xff0c;它涉及从选址评估到系统安装与维护的全过程。本文将详细介绍光伏设计的基本步骤&#…

【STM32/HAL】嵌入式课程设计:简单的温室环境监测系统|DS18B20 、DHT11

前言 板子上的外设有限&#xff0c;加上想法也很局限&#xff0c;就用几个传感器实现了非常简单的监测&#xff0c;显示和效应也没用太复杂的效果。虽说很简单&#xff0c;但传感器驱动还是琢磨了不久&#xff0c;加上串口线坏了&#xff0c;调试了半天才发现不是代码错了而是…

【持续集成_03课_Linux部署Sonar+Gogs+Jenkins】

一、通过虚拟机搭建Linux环境-CnetOS 1、安装virtualbox&#xff0c;和Vmware是一样的&#xff0c;只是box更轻量级 1&#xff09;需要注意内存选择&#xff0c;4G 2、启动完成后&#xff0c;需要获取服务器IP地址 命令 ip add 服务器IP地址 通过本地的工具&#xff0c;进…

苍穹外卖--启用和禁用员工

实现 package com.sky.controller.admin;import com.sky.constant.JwtClaimsConstant; import com.sky.dto.EmployeeDTO; import com.sky.dto.EmployeeLoginDTO; import com.sky.dto.EmployeePageQueryDTO; import com.sky.entity.Employee; import com.sky.properties.JwtPro…

Debezium报错处理系列之第114篇:No TableMapEventData has been found for table id:256.

Debezium报错处理系列之第114篇:Caused by: com.github.shyiko.mysql.binlog.event.deserialization.MissingTableMapEventException: No TableMapEventData has been found for table id:256. Usually that means that you have started reading binary log within the logic…

救生拉网的使用方法及注意事项_鼎跃安全

水域救援在夏季尤为重要&#xff0c;随着气温的升高&#xff0c;人们更倾向于参与水上活动&#xff0c;如游泳、划船、垂钓等&#xff0c;这些活动虽然带来了乐趣和清凉&#xff0c;但同时也增加了水域安全事故的风险。救生拉网作为水域安全的重要工具之一&#xff0c;其重要性…

咱迈出了模仿的第一大步!快进来看看~

微信公众号&#xff1a;牛奶Yoka的小屋 有任何问题。欢迎来撩~ 最近更新&#xff1a;2024/06/28 [大家好&#xff0c;我是牛奶。] 这是第一篇模仿文章。咱决定先模仿样式&#xff0c;从外至里&#xff0c;层层递进。于是找了几个大V的公众号&#xff0c;看来看去&#xff0c;发…

swing图书管理系统+源码+讲解+ 报告

本次实训要求使用Java面向对象、MySQL数据库和Swing图形组件简单实现xxxx系统的增删改查操作&#xff08;比如学生信息管理系统&#xff09;。 实训目标 掌握面向对象编程的基本概念&#xff1a;类、对象、继承、封装和多态。学习使用Java进行数据库操作。熟悉MySQL数据库的使…

Instruct-GS2GS:通过用户指令编辑 GS 三维场景

Paper: Instruct-GS2GS: Editing 3D Gaussian Splats with Instructions Introduction: https://instruct-gs2gs.github.io/ Code: https://github.com/cvachha/instruct-gs2gs Instruct-GS2GS 复用了 Instruct-NeRF2NeRF 1 的架构&#xff0c;将基于 NeRF 的三维场景编辑方法迁…