C++ stack容器-50-栈容器基本概念和常用接口

2023-11-13

接着学习下一个容器,stack,栈容器。当然后面还要学习一个队列容器,两个有点相似一般一起对比和学习。本篇主要学习栈容器的基本概念和常用接口的基本使用。

 

1.什么是stack

stack是一种先进后出(First In Last Out)FILO的容器,它只有一个出口。

 

2.stack的特点

下面这张图给出栈的特点

栈中只有顶部元素运行外部使用,所以,栈容器没有遍历操作。

 

3.stack的常用API

根据上面这张图,栈就基本操作API都在顶部元素的入栈和出栈操作,还有统计元素个数和容量相关接口。

3.1 stack的构造函数

函数原型

stack<T> stk;	                // 默认构造,采用模板类实现
stack(const stack &stk);	//拷贝构造函数

3.2 stack的赋值caoz

重载了等号(=)

3.3 stack的存取操作

push(ele);	//向栈顶添加元素
pop();	//从栈顶移除第一个元素
top();	//返回栈顶元素

3.4 stack大小

empty();  // 判断栈是否为空
size();	//返回栈的大小

代码练习

#include <iostream>
#include <string>
#include <stack>
using namespace std;

void test01()
{
    // stack 构造函数
    stack<int> stk;

    //添加元素
    cout << "is Empty? " << stk.empty() << endl;
    stk.push(10);
    stk.push(20);
    stk.push(30);
    stk.push(40);
    stk.push(50);

    //获取栈顶元素
    cout << "top element: " << stk.top() << endl;

    // 大小
    cout << "current size: " << stk.size() << endl;
    
    // 移除栈顶元素
    stk.pop();
    cout << "current size: " << stk.size() << endl;

}


int main()
{
    test01();
    system("pause");
    return 0;
}

运行结果

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ stack容器-50-栈容器基本概念和常用接口 的相关文章

  • 如何使用 C# 中的参数将用户重定向到 paypal

    如果我有像下面这样的简单表格 我可以用它来将用户重定向到 PayPal 以完成付款
  • 没有强命名的代码签名是否会让您的应用程序容易被滥用?

    尝试了解authenticode代码签名和强命名 我是否正确地认为 如果我对引用一些 dll 非强命名 的 exe 进行代码签名 恶意用户就可以替换我的 DLL 并以看似由我签名但正在运行的方式分发应用程序他们的代码 假设这是真的 那么您似
  • 我如何才能等待多个事情

    我正在使用 C 11 和 stl 线程编写一个线程安全队列 WaitAndPop 方法当前如下所示 我希望能够将一些内容传递给 WaitAndPop 来指示调用线程是否已被要求停止 如果 WaitAndPop 等待并返回队列的元素 则应返回
  • 不支持将数据直接绑定到存储查询(DbSet、DbQuery、DbSqlQuery)

    正在编码视觉工作室2012并使用实体模型作为我的数据层 但是 当页面尝试加载时 上面提到的标题 我使用 Linq 语句的下拉控件往往会引发未处理的异常 下面是我的代码 using AdventureWorksEntities dw new
  • 类模板参数推导 - clang 和 gcc 不同

    下面的代码使用 gcc 编译 但不使用 clang 编译 https godbolt org z ttqGuL template
  • BitTorrent 追踪器宣布问题

    我花了一点业余时间编写 BitTorrent 客户端 主要是出于好奇 但部分是出于提高我的 C 技能的愿望 我一直在使用理论维基 http wiki theory org BitTorrentSpecification作为我的向导 我已经建
  • Clang 3.1 + libc++ 编译错误

    我已经构建并安装了 在前缀下 alt LLVM Clang trunk 2012 年 4 月 23 日 在 Ubuntu 12 04 上成功使用 GCC 4 6 然后使用此 Clang 构建的 libc 当我想使用它时我必须同时提供 lc
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • 创建链表而不将节点声明为指针

    我已经在谷歌和一些教科书上搜索了很长一段时间 我似乎无法理解为什么在构建链表时 节点需要是指针 例如 如果我有一个节点定义为 typedef struct Node int value struct Node next Node 为什么为了
  • WCF 中 SOAP 消息的数字签名

    我在 4 0 中有一个 WCF 服务 我需要向 SOAP 响应添加数字签名 我不太确定实际上应该如何完成 我相信响应应该类似于下面的链接中显示的内容 https spaces internet2 edu display ISWG Signe
  • while 循环中的 scanf

    在这段代码中 scanf只工作一次 我究竟做错了什么 include
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • 对现有视频添加水印

    我正在寻找一种用 C 在视频上加水印的方法 就像在上面写文字一样 图片或文字标签 我该怎么做 谢谢 您可以使用 Nreco 视频转换器 代码看起来像 NReco VideoConverter FFMpegConverter wrap new
  • 如何将带有 IP 地址的连接字符串放入 web.config 文件中?

    我们当前在 web config 文件中使用以下连接字符串 add name DBConnectionString connectionString Data Source ourServer Initial Catalog ourDB P
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • 混合 ExecutionContext.SuppressFlow 和任务时 AsyncLocal.Value 出现意外值

    在应用程序中 由于 AsyncLocal 的错误 意外值 我遇到了奇怪的行为 尽管我抑制了执行上下文的流程 但 AsyncLocal Value 属性有时不会在新生成的任务的执行范围内重置 下面我创建了一个最小的可重现示例来演示该问题 pr
  • 如何在文本框中插入图像

    有没有办法在文本框中插入图像 我正在开发一个聊天应用程序 我想用图标图像更改值 等 但我找不到如何在文本框中插入图像 Thanks 如果您使用 RichTextBox 进行聊天 请查看Paste http msdn microsoft co
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new

随机推荐

  • 华为OD机试真题-等和子数组的最小和【2023Q1】

    题目描述 给定一个数组nums 将元素分为若干个组 使得每组和相等 求出满足条件的所有分组中 组内元素和的最小值 输入描述 第一行输入 m 接着输入m个数 表示此数组 数据范围 1 lt M lt 50 1 lt nums i lt 50
  • python编程菱形_Python—什么是菱形继承

    继承是面向对象编程的一个重要的方式 通过继承 子类就可以扩展父类的功能 在python中一个类能继承自不止一个父类 这叫做python的多重继承 Multiple Inheritance 语法 class SubclassName Base
  • 布隆过滤器实战【防止缓存击穿】

    为什么引入 我们的业务中经常会遇到穿库的问题 通常可以通过缓存解决 如果数据维度比较多 结果数据集合比较大时 缓存的效果就不明显了 因此为了解决穿库的问题 我们引入Bloom Filter 适合的场景 数据库防止穿库 Google Bigt
  • Minecraft外置登录服务器Little-Skin讲解

    随着Minecraft的普及与发展 现在许多小伙伴是越来越爱上了MC 但是想玩国际正版岂是那么容易 或许你会说 HMCL不就是java启动器吗 这句话是没错 但是HMCL的都是离线账户 那么该怎么永远拥有一个稳定的账户呢 这就是今天为大家分
  • nginx try_files流程解析

    前端部署单页应用时在nginx上经常用到try files指令 而对于try files并不知道其所以然 所以花时间整理总结如下 Syntax try files file uri try files file code Default C
  • 好久没写东西了!!!

    最近存储升级 一直忙着这个 这个事情不弄完 心里总是不踏实 毕竟所有的数据都在上面呢 预计这个月中旬就可以完成了 也可以安稳下了看些东西了 最近烦 烦 烦
  • DWDM原理与光纤传输

    文章目录 波分复用WDM DWDM解决问题 特点 超长距离 无电 中继传输 降低成本 WDM 类别分类 波分系统的基本组成 波分技术的优势 DWDM网元基本类型 波分常见站点类型 OTM Optical Terminal Multiplex
  • 关于控制下拉框select只读的js控制

    关于控制下拉框select只读的js控制 文本框有readonly属性 直接设置 下拉框没有readonly属性 也不能通过其他属性进行只读的设置 下拉框只有disabled属性 但是这个属性设成true之后 值就获取不到了 我在网上搜了一
  • 常用矩阵求导公式

    常用矩阵求导公式 在学习张量分解 TUCKER or CP 分解的时候 我们经常会遇到各式各样的优化模型 其中最简单的就是对代价函数 cost function 进行求导然后通过梯度下降法 gradient decent method 共轭
  • 使用 DeferredResult 实现相应的异步生成返回值的功能

    最近使用了 DeferredResult 来实现相应的异步生成返回值的功能 来这里记录一下 官方文档中说DeferredResult和Callable都是为了异步生成返回值提供基本的支持 简单来说就是一个请求进来 如果你使用了Deferre
  • 扩展欧几里得算法详解

    为了介绍扩展欧几里得 我们先介绍一下贝祖定理 即如果a b是整数 那么一定存在整数x y使得ax by gcd a b 换句话说 如果ax by m有解 那么m一定是gcd a b 的若干倍 可以来判断一个这样的式子有没有解 有一个直接的应
  • c花体复制_可复制花体字大全?

    匿名用户 1级 2017 12 01 回答 花体需要柔软的有弹性的笔尖去表现粗细的变化 用较细的笔尖尖端去表现游丝的生动 因而对于花体英文书写来说重要的是笔尖而非笔杆 新手建议使用诸如Gillot 404 hunt101 56 22b hi
  • vue实现简单的登入功能

    html部分
  • vue自定义指令的创建和使用

    1 bind 只调用一次 指令第一次绑定到元素时调用 用这个钩子函数可以定义一个绑定时执行一次的初始化动作 2 inserted 被绑定元素插入父节点时调用 父节点存在即可调用 不必存在于document中 3 update 被绑定于元素所
  • 华为IC岗笔试刷题含答案(2)

    目录 单选 多选 判断 单选 1 的目的都是关注单元模块的集成 功能组合 模块间的接口及时序 sub chip本身的设计功能和规格正确性 A 集成验证 IT B FPGA原型验证 C 系统验证ST D 单元验证UT 2 关于多bit信号的异
  • react学习之完善官网游戏教程

    react学习之完善官网游戏教程 1 在游戏历史记录列表显示每一步棋的坐标 格式为 列号 行号 2 在历史记录列表中加粗显示当前选择的项目 3 使用两个循环来渲染出棋盘的格子 而不是在代码里写死 hardcode 4 添加一个可以升序或降序
  • 203实验室启动conda

    启动conda 环境 由于我们没有conda init 以后每次启动都需要用这个命令 source miniconda3 bin activate
  • CentOS 编译错误+配置错误解决方法集合

    ERROR the HTTP XSLT module requires the libxml2 libxslt yum y install libxml2 libxml2 dev yum y install libxslt devel 1
  • 基于OpenCV的简易实时手势识别(含代码)

    基于OpenCV的简易实时手势识别 1 基本信息介绍 1 1实验步骤 1 2效果展示 2 肤色检测 二值化 开运算 高斯模糊 2 1 flip 函数原型 2 2cvtColor 函数原型 2 3split 函数原型 2 4GaussianB
  • C++ stack容器-50-栈容器基本概念和常用接口

    接着学习下一个容器 stack 栈容器 当然后面还要学习一个队列容器 两个有点相似一般一起对比和学习 本篇主要学习栈容器的基本概念和常用接口的基本使用 1 什么是stack stack是一种先进后出 First In Last Out FI