【C++研发面试笔记】16. 基本数据结构-队列queue与栈stack

2023-11-05

【C++研发面试笔记】16. 基本数据结构-队列queue与栈stack

16.1 STL中stack实现

stack 模板类的定义在头文件中。栈中的数据是先进后出的(First In Last Out, FILO)。栈只有一个出口,允许新增元素(只能在栈顶上增加)、移出元素(只能移出栈顶元素)、取得栈顶元素等操作。
stack 模板类需要两个模板参数,一个是元素类型,一个容器类型,但只有元素类型是必要
的,在不指定容器类型时,默认的容器类型为deque。

16.1.1 定义

定义stack 对象的示例代码如下:

stack<int> s1;
stack<string> s2;

16.1.2 基本操作

入栈,如例:s.push(x);
出栈,如例:s.pop();注意,出栈操作只是删除栈顶元素,并不返回该元素。
访问栈顶,如例:s.top()
判断栈空,如例:s.empty(),当栈空时,返回true。
访问栈中的元素个数,如例:s.size()。


16.2 自定义stack实现

栈可以通过数组来实现,这里用得是vector

16.2.1 定义栈

这里写图片描述
这里写图片描述

16.2.2 判断是否为空

这里写图片描述

16.2.3 入栈

这里写图片描述

16.2.4 出栈

这里写图片描述


16.3 STL中queue实现

queue 模板类的定义在头文件中。与stack 模板类很相似,queue 模板类也需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的,默认为deque 类型。

16.3.1 定义

定义queue 对象的示例代码如下:

queue<int> q1;
queue<double> q2;

16.3.2 基本操作

入队:q.push(x); 将x 接到队列的末端。
出队:q.pop(); 弹出队列的第一个元素,但不会返回被弹出元素。
访问队首元素:q.front(),即最早被压入队列的元素。
访问队尾元素:q.back(),即最后被压入队列的元素。
判断队列空:q.empty(),当队列空时,返回true。
访问队列中的元素个数:q.size()

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

【C++研发面试笔记】16. 基本数据结构-队列queue与栈stack 的相关文章

  • 使用 lambda 表达式注册类型

    我想知道如何在 UnityContainer 中实现这样的功能 container RegisterType
  • 计算 XML 中特定 XML 节点的数量

    请参阅此 XML
  • 代码 GetAsyncKeyState(VK_SHIFT) & 0x8000 中的这些数字是什么?它们是必不可少的吗?

    我试图在按下按键的简单动作中找到这些数字及其含义的任何逻辑解释 GetAsyncKeyState VK SHIFT 0x8000 可以使用哪些其他值来代替0x8000它们与按键有什么关系 GetAsyncKeyState 根据文档返回 如果
  • IdentityServer 4 对它的工作原理感到困惑

    我阅读和观看了很多有关 Identity Server 4 的内容 但我仍然对它有点困惑 因为似乎有很多移动部件 我现在明白这是一个单独的项目 它处理用户身份验证 我仍然不明白的是用户如何注册它 谁存储用户名 密码 我打算进行此设置 Rea
  • JNI 将 Char* 2D 数组传递给 JAVA 代码

    我想从 C 代码通过 JNI 层传递以下指针数组 char result MAXTEST MAXRESPONSE 12 12 8 3 29 70 5 2 42 42 在java代码中我写了以下声明 public static native
  • 如何填充 ToolStripComboBox?

    我发现它很难将数据绑定到ToolStripComboBox 好像没有这个ValueMember and DisplayMember特性 怎么绑定呢 访问toolstripcombobox中包装的组合框并访问其ValueMember Disp
  • Visual Studio 在构建后显示假错误

    我使用的是 Visual Studio 2017 构建后 sln在调试模式下 我收到错误 但是 当我通过双击错误列表选项卡中的错误来访问错误时 错误会从页面中消失 并且错误数量也会减少 我不太确定这种行为以及为什么会发生这种情况 有超过 2
  • Python 属性和 Swig

    我正在尝试使用 swig 为一些 C 代码创建 python 绑定 我似乎遇到了一个问题 试图从我拥有的一些访问器函数创建 python 属性 方法如下 class Player public void entity Entity enti
  • 将 Long 转换为 DateTime 从 C# 日期到 Java 日期

    我一直尝试用Java读取二进制文件 而二进制文件是用C 编写的 其中一些数据包含日期时间数据 当 DateTime 数据写入文件 以二进制形式 时 它使用DateTime ToBinary on C 为了读取 DateTime 数据 它将首
  • 如何在 C 中安全地声明 16 位字符串文字?

    我知道已经有一个标准方法 前缀为L wchar t test literal L Test 问题是wchar t不保证是16位 但是对于我的项目 我需要16位wchar t 我还想避免通过的要求 fshort wchar 那么 C 不是 C
  • 为什么这个二维指针表示法有效,而另一个则无效[重复]

    这个问题在这里已经有答案了 这里我编写了一段代码来打印 3x3 矩阵的对角线值之和 这里我必须将矩阵传递给函数 矩阵被传递给指针数组 代码可以工作 但问题是我必须编写参数的方式如下 int mat 3 以下导致程序崩溃 int mat 3
  • C++ int 前面加 0 会改变整个值

    我有一个非常奇怪的问题 如果我像这样声明一个 int int time 0110 然后将其显示到控制台返回的值为72 但是当我删除前面的 0 时int time 110 然后控制台显示110正如预期的那样 我想知道两件事 首先 为什么它在
  • 检测到严重错误 c0000374 - C++ dll 将已分配内存的指针返回到 C#

    我有一个 c dll 它为我的主 c 应用程序提供一些功能 在这里 我尝试读取一个文件 将其加载到内存 然后返回一些信息 例如加载数据的指针和内存块的计数到 c Dll 成功将文件读取到内存 但在返回主应用程序时 程序由于堆损坏而崩溃 检测
  • 在屏幕上获取字符

    我浏览了 NCurses 函数列表 似乎找不到返回已打印在屏幕上的字符的函数 每个字符单元格中存储的字符是否有可访问的值 如果没有的话Windows终端有类似的功能吗 我想用它来替换屏幕上某个值的所有字符 例如 所有a s 具有不同的特征
  • 打印大型 WPF 用户控件

    我有一个巨大的数据 我想使用 WPF 打印 我发现WPF提供了一个PrintDialog PrintVisual用于打印派生的任何 WPF 控件的方法Visual class PrintVisual只会打印一页 因此我需要缩放控件以适合页面
  • Unity:通过拦截将两个接口注册为一个单例

    我有一个实现两个接口的类 我想对该类的方法应用拦截 我正在遵循中的建议Unity 将两个接口注册为一个单例 https stackoverflow com questions 1394650 unity register two inter
  • 实体框架中的“it”是什么

    如果以前有人问过这个问题 请原谅我 但我的任何搜索中都没有出现 它 我有两个数据库表 Person 和 Employee 对每个类型的表进行建模 例如 Employee is a Person 在我的 edmx 设计器中 我定义了一个实体
  • Objective-C / C 给出枚举默认值

    我在某处读到过关于给枚举默认值的内容 如下所示 typedef enum MarketNavigationTypeNone 0 MarketNavigationTypeHeirachy 1 MarketNavigationTypeMarke
  • 灵气序列解析问题

    我在使用 Spirit Qi 2 4 编写解析器时遇到一些问题 我有一系列键值对以以下格式解析
  • 不区分大小写的字符串比较 C++ [重复]

    这个问题在这里已经有答案了 我知道有一些方法可以进行忽略大小写的比较 其中涉及遍历字符串或一个good one https stackoverflow com questions 11635 case insensitive string

随机推荐

  • Redis 连接命令

    Redis 命令用于在 redis 服务上执行操作 要在 redis 服务上执行命令需要一个 redis 客户端 Redis 客户端在我们之前下载的的 redis 的安装包中 语法 Redis 客户端的基本语法为 启动 redis 客户端
  • ubuntu16.04安装cmake-3.8.1最靠谱的方法(ubuntu下安装指定版本cmke)

    1 问题描述 2 cmake安装五种方法 法一 下载cmake二进制安装包 配置路径 亲测有效 法二 cmake源码编译 注意和法一区别 法三 apt安装 法四 在原基础上升级版本 法五 ppa安装 1 问题描述 在配置OpenMVS时 报
  • 【vue+El-element】实现todolist

    好像拖更了很久 很抱歉 最近想了一下css和js等内容还是不总结了 本来内容就多 不是一篇博客能说完的 而且我也只学了皮毛 以后还是通过实例的方式来分享一下学过的东西 希望能帮到大家 目录 一 实现功能 二 实现方法 1 数据的传递 2 按
  • 'WebDriver' object has no attribute 'error' 问题已解决

    实例化的过程中传错参数所致 将logger的参数传给了driver 将传参的顺序调换即可
  • TensorFlow模型变量重用

    TensorFlow模型变量重用问题 加载模型及检测的 py predict py import numpy as np import tensorflow as tf from PIL import Image import time i
  • 用ST-Link V2烧录器配合arduino IDE给STM32F103C8T6烧写程序以及注意事项

    用ST Link V2烧录器配合arduinoIDE给STM32F103C8T6烧写程序以及注意事项 注意事项 使用ST Link烧录工具烧录的话 默认的串口输出是Serial1 而使用串口工具烧录的话 默认输出串口为Serial 示例程序
  • File类、Directory类、FileInfo、DirectoryInfo类的区别

    1 File 提供用于创建 复制 删除 移动和打开文件的静态方法 并协助创建FileStream对象 if textBox4 Text string Empty MessageBox Show 文件名不能为空 else if File Ex
  • Nginx反向代理可打开首页无法登陆解决

    Nginx安装部署参考 https blog csdn net weixin 45958851 article details 103736418 问题现象 浏览器访问 10 2 55 112 8080 可以打开tomcat首页 登录之后浏
  • 王佩丰excel学习笔记(五):第十五——十八讲

    目录 第十五讲 第十六讲 第十七讲 第十八讲 第十五讲 根据某些条件突出显示单元格 开始 条件格式 突出显示单元格规则 制作数据范围趋势 开始 条件格式 数据条 用于分组统计 插入 切片器 多重条件格式 同一个区域使用多次条件格式 自由度更
  • C++实现二叉树的递归遍历与非递归遍历

    基本上所有关于二叉树的操作都是基于二叉树的遍历算法来实现的 因此在这里讲一下二叉树的遍历算法 其中包括递归与非递归算法 在算法中用输出节点数据来代替对节点的操作 首先给出这样一棵数 1 前序遍历 所谓前序遍历就是先对节点数据进行处理 然后才
  • 报错记录proxy error:Could not proxy request ... from ... to...

    1 查看自己的端口和启动服务的端口是否一致 2 确认后端服务是否关闭 3 确认后端环境启动的是开发环境还是测试环境
  • [服务被植入脚本,数据泄密?数据库如何做内网访问?]

    目录 前言 数据库内网访问的方式 使用nginx进行反向代理可以实现将外部用户的请求转发到内网中的数据库服务器上 具体步骤如下 使用SSH隧道可以建立加密的连接 从而实现外部用户通过SSH隧道访问内网中的数据库 具体步骤如下 使用端口映射可
  • Pycharm使用之心得

    PyCharm 简单使用 文章目录 PyCharm 简单使用 一 PyCharm介绍 二 PyCharm使用配置 三 PyCharm快捷键大全 四 PyCharm在工作中的实际应用 1 Pycharm 版本控制 2 PyCharm debu
  • topcoder世界冠军petr的编程感言

    Do not spend all your time on training or studying this way you will probably become very exhausted and unwilling to com
  • [用python辅助学生中考与高考-4]:家长篇-中考科技特长生知多少如何通过Python来辅助学习数学?

    目录 前言 教材简介 作者简介 内容目录 第一部分 搭上你的 Python 马车阅读 适合小学 第二部分 奔向数学领域 适合初高中 第三部分 开辟你自己的道路 适合大学 前言 python可以说是科技特长生的一项必备的基础和入门编程技能 同
  • js实现简易的ATM取款机

    var money 1000000 设置初始金额 while true var action prompt 请输入以下序列号进行操作 n 1 存款 n 2 取款 n 3 查看余额 n 4 取卡 switch parseInt action
  • 数据库连接池( C3P0/Druid)两种

    今日内容 1 数据库连接池 数据库连接池 1 概念 其实就是一个容器 集合 存放数据库连接的容器 当系统初始化好后 容器被创建 容器中会申请一些连接对象 当用户来访问数据库时 从容器中获取连接对象 用户访问完之后 会将连接对象归还给容器 2
  • VS 2019 Key(自用)

    Visual Studio 2019 Enterprise BF8Y8 GN2QH T84XB QVY3B RC4DF Visual Studio 2019 Professional NYWVH HT4XC R2WYW 9Y3CM X4V3
  • stm32毕设分享100例(五)

    单片机毕业设计项目分享系列 这里是DD学长 单片机毕业设计及享100例系列的第一篇 目的是分享高质量的毕设作品给大家 包含全面内容 源码 原理图 PCB 实物演示 论文 这两年开始毕业设计和毕业答辩的要求和难度不断提升 传统的单片机项目缺少
  • 【C++研发面试笔记】16. 基本数据结构-队列queue与栈stack

    C 研发面试笔记 16 基本数据结构 队列queue与栈stack 16 1 STL中stack实现 stack 模板类的定义在头文件中 栈中的数据是先进后出的 First In Last Out FILO 栈只有一个出口 允许新增元素 只