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-栈容器基本概念和常用接口 的相关文章

  • 静态只读字符串数组

    我在我的 Web 应用程序中使用静态只读字符串数组 基本上数组有错误代码 我将所有类似的错误代码保存在一个数组中并检查该数组 而不是检查不同常量字符串中的每个错误代码 like public static readonly string m
  • 为什么在连接两个字符串时 Python 比 C 更快?

    目前我想比较 Python 和 C 用来处理字符串的速度 我认为 C 应该比 Python 提供更好的性能 然而 我得到了完全相反的结果 这是 C 程序 include
  • CLR 2.0 与 4.0 性能比较?

    如果在 CLR 4 0 下运行 为 CLR 2 0 编译的 NET 程序会运行得更快吗 应用程序配置
  • 使用 lambda 表达式注册类型

    我想知道如何在 UnityContainer 中实现这样的功能 container RegisterType
  • 适合初学者的良好调试器教程[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有谁知道一个好的初学者教程 在 C 中使用调试器 我感觉自己好像错过了很多 我知道怎么做 单步执行代码并查看局部变量 虽然这常常给我带来问
  • 如何在多线程C++ 17程序中交换两个指针?

    我有两个指针 pA 和 pB 它们指向两个大的哈希映射对象 当pB指向的哈希图完全更新后 我想交换pB和pA 在C 17中 如何快速且线程安全地交换它们 原子 我是 c 17 的新手 2个指针的原子无等待交换可以通过以下方式实现 inclu
  • 如何在C(Linux)中的while循环中准确地睡眠?

    在 C 代码 Linux 操作系统 中 我需要在 while 循环内准确地休眠 比如说 10000 微秒 1000 次 我尝试过usleep nanosleep select pselect和其他一些方法 但没有成功 一旦大约 50 次 它
  • 如何判断计算机是否已重新启动?

    我曾经使用过一个命令行 SMTP 邮件程序 作为试用版的限制 它允许您在每个 Windows 会话中最多接收 10 封电子邮件 如果您重新启动计算机 您可能还会收到 10 个以上 我认为这种共享软件破坏非常巧妙 我想在我的应用程序中复制它
  • 为什么在 WebApi 上下文中在 using 块中使用 HttpClient 是错误的?

    那么 问题是为什么在 using 块中使用 HttpClient 是错误的 但在 WebApi 上下文中呢 我一直在读这篇文章不要阻止异步代码 https blog stephencleary com 2012 07 dont block
  • C# 数据表更新多行

    我如何使用数据表进行多次更新 我找到了这个更新 1 行 http support microsoft com kb 307587 my code public void ExportCSV string SQLSyntax string L
  • 为什么可以通过ref参数修改readonly字段?

    考虑 class Foo private readonly string value public Foo Bar ref value private void Bar ref string value value hello world
  • C# 存档中的文件列表

    我正在创建一个 FileFinder 类 您可以在其中进行如下搜索 var fileFinder new FileFinder new string C MyFolder1 C MyFolder2 new string
  • 启动时的 Excel 加载项

    我正在使用 Visual C 创建 Microsoft Excel 的加载项 当我第一次创建解决方案时 它包含一个名为 ThisAddIn Startup 的函数 我在这个函数中添加了以下代码 private void ThisAddIn
  • 使用valgrind进行GDB远程调试

    如果我使用远程调试gdb我连接到gdbserver using target remote host 2345 如果我使用 valgrind 和 gdb 调试内存错误 以中断无效内存访问 我会使用 target remote vgdb 启动
  • 在视口中查找 WPF 控件

    Updated 这可能是一个简单或复杂的问题 但在 wpf 中 我有一个列表框 我用一个填充数据模板从列表中 有没有办法找出特定的数据模板项位于视口中 即我已滚动到其位置并且可以查看 目前我连接到了 listbox ScrollChange
  • 为什么这个二维指针表示法有效,而另一个则无效[重复]

    这个问题在这里已经有答案了 这里我编写了一段代码来打印 3x3 矩阵的对角线值之和 这里我必须将矩阵传递给函数 矩阵被传递给指针数组 代码可以工作 但问题是我必须编写参数的方式如下 int mat 3 以下导致程序崩溃 int mat 3
  • 保护 APK 中的字符串

    我正在使用 Xamarin 的 Mono for Android 开发一个 Android 应用程序 我目前正在努力使用 Google Play API 添加应用内购买功能 为此 我需要从我的应用程序内向 Google 发送公共许可证密钥
  • 高效列出目录中的所有子目录

    请参阅迄今为止所采取的建议的编辑 我正在尝试使用 WinAPI 和 C 列出给定目录中的所有目录 文件夹 现在我的算法又慢又低效 使用 FindFirstFileEx 打开我正在搜索的文件夹 然后我查看目录中的每个文件 使用 FindNex
  • 在 Windows Phone silverlight 8.1 上接收 WNS 推送通知

    我有 Windows Phone 8 1 silverlight 应用程序 我想使用新框架 WNS 接收通知 我在 package appxmanifest 中有
  • OpenCV SIFT 描述符关键点半径

    我正在深入研究OpenCV的SIFT描述符提取的实现 https github com Itseez opencv blob master modules nonfree src sift cpp 我发现了一些令人费解的代码来获取兴趣点邻域

随机推荐

  • 华为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