c++ queue用法 入门必看 超详细

2023-11-18

1、queue的作用

说到queue,大家一定会想到stack,同样是简单易用的数据结构之一。queue就是队列的意思,像大家日常排队一样,先排的人先用。stack则是相反的,后来的先用。这就有了queue先进先出,stack后进先出的说法。

queue是一个很简单的数据结构,但是却非常实用,同时也是必不可少的,其它的数据结构都无法替代队列。

queue常用于模仿队列,在算法中比较常用的有单调队列算法

相信看完本文就能上手使用了

2、queue的定义

queue<储存的类型> 容器名
如:
储存int型数据的队列 queue q;
储存double型数据的队列 queue q;
储存string型数据的队列 queue q;
储存结构体或者类的队列 queue<结构体名> q;

3、queue的成员函数

back() //返回最后一个元素 
empty() //如果队列空则返回真 
front() //返回第一个元素 
pop() //删除第一个元素 
push() //在末尾加入一个元素 
size() //返回队列中元素的个数 

示例代码:

#include<iostream>//c++标准头文件,可以使用cout,cin等标准库函数 
#include<queue>//使用queue时需要的头文件 
using namespace std;//命名空间,防止重名给程序带来各种隐患,使用cin,cout,stack,map,set,vector,queue时都要使用
int main(){
	queue<int> q;//定义一个int类型的队列
	
	q.push(1);//在队尾添加元素1 
	q.push(2);//在队尾添加元素2
	q.push(3);//在队尾添加元素3
	cout<<"插入元素1、2、3后,目前队列中的元素:1 2 3"<<endl;
	cout<<"q.size()="<<q.size()<<endl;//q.size()查看目前队列中的元素个数 
	cout<<"q.empty()="<<q.empty()<<endl;//查看队列是否为空,1即为空,0即非空 
	cout<<"q.front()="<<q.front()<<endl; //查看队首元素 
	
	cout<<endl; 
	q.pop();//队首元素出队
	cout<<"q.pop()后,目前队列中的元素:2 3 "<<endl; 
	cout<<"q.size()="<<q.size()<<endl;//q.size()查看目前队列中的元素个数 
	cout<<"q.empty()="<<q.empty()<<endl;//查看队列是否为空,1即为空,0即非空 
	cout<<"q.front()="<<q.front()<<endl; //查看队首元素 
	 
	
	cout<<endl; 
	q.pop();//队首元素出队
	cout<<"q.pop()后,目前队列中的元素:3" <<endl; 
	cout<<"q.size()="<<q.size()<<endl;//q.size()查看目前队列中的元素个数 
	cout<<"q.empty()="<<q.empty()<<endl;//查看队列是否为空,1即为空,0即非空 
	cout<<"q.front()="<<q.front()<<endl; //查看队首元素 
	
	
	cout<<endl; 
	q.pop();//队首元素出队
	cout<<"q.pop()后,目前队列是空的"<<endl; 
	cout<<"q.size()="<<q.size()<<endl;//q.size()查看目前队列中的元素个数 
	cout<<"q.empty()="<<q.empty()<<endl;//查看队列是否为空,1即为空,0即非空 
	cout<<"队列是空的时候将不能用q.front()查看队首元素" <<endl; 
	 
	 
}

运行结果:

插入元素123后,目前队列中的元素:1 2 3
q.size()=3
q.empty()=0
q.front()=1

q.pop()后,目前队列中的元素:2 3
q.size()=2
q.empty()=0
q.front()=2

q.pop()后,目前队列中的元素:3
q.size()=1
q.empty()=0
q.front()=3

q.pop()后,目前队列是空的
q.size()=0
q.empty()=1
队列是空的时候将不能用q.front()查看队首元素

queue和stack都是不能随机访问的,即通过下标访问元素,也不能遍历

至此队列的基本用法就学完咯

是不是很简单呢?

刚接触肯定会觉得难,多些做题多些用,熟悉了就容易了,兄弟萌,加油!!!

文章尚有不足,欢迎大牛们指正

感谢观看,点个赞吧

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

c++ queue用法 入门必看 超详细 的相关文章

  • 运行应用程序时.NET 3.5 JIT 不工作

    以下代码在 Visual Studio 内部运行该版本和在 Visual Studio 外部运行该版本时提供不同的输出 我正在使用 Visual Studio 2008 并面向 NET 3 5 我也尝试过 NET 3 5 SP1 在 Vis
  • 使用sqlbulkcopy之前如何创建表

    我有一个 DBF 文件 我正在尝试导入该文件 然后将其写入 SQL 表 我遇到的问题是 如果我使用 SqlBulkCopy 它需要我提前创建表 但在我的场景中这是不可能的 因为 dbf 文件不断变化 到目前为止 这是我的代码 public
  • C++ 中的“int”默认是“signed long int”吗?

    Is int默认情况下signed long int in C 它是否依赖于平台和 或编译器 如果是这样 怎么办 EDIT 以下任何一项是否保证是重复的 signed short int signed int signed long int
  • C# - Visual Studio 中的 System.OutOfMemoryException

    我遇到问题 当我右键单击 Visual Studio 中的主窗体并转到 视图设计器 时 出现错误 它说 引发了 System OutOfMemoryException 类型的异常 堆栈跟踪 at System Reflection Asse
  • 在异步请求中使用超时回调

    我之前问过这个问题 但我将用提出的解决方案来完成这个问题 并提出另一个问题 我正在使用这个类来进行异步网络请求 http msdn microsoft com en us library system net webrequest aspx
  • 使用 GCHandle 将大型结构数组从 C# unity 脚本传递到 C++ dll 在 C++ 函数执行后崩溃

    我想从 C unity 脚本将结构数组传递给 c 本机插件 我做了如下操作 我可以访问数据 但我的应用程序在执行 c 函数后崩溃 我不知道为什么 C side StructLayout LayoutKind Sequential publi
  • 何时使用 C++ 私有继承而不是组合?

    你能给我一个具体的例子吗 什么时候使用私有继承优于组合 就我个人而言 我将使用组合而不是私有继承 但在某些情况下 使用私有继承可能是特定问题的最佳解决方案 正在阅读C faq http www parashift com c faq lit
  • 如何检查号码是否只有唯一的数字?

    例如 2345 是唯一的数字 因为没有数字显示两次 但 3324 不是唯一的数字 因为 3 出现了两次 我尝试使用 但我 代码 显示但我没有得到数字我得到了数字 编辑 你不能使用字符串 number 10 number 100 number
  • 尽管浮点数相同,但它们并不相等? [复制]

    这个问题在这里已经有答案了 下面的程序输出This No is not same 当两个数字相同时为什么会这样做 void main float f 2 7 if f 2 7 printf This No is same else prin
  • 如何将 Visual-Studio 2010 切换到 c++11

    我是 c 编程新手 我想尝试 c 11 新功能 那么我要问的是如何切换 Visual studio 2010 才能编译 c 11 源代码 你可以参考这个表 VC10 中的 C 0x 核心语言功能 表格 http blogs msdn com
  • AcceptSocket 超时?

    是否有可能AcceptSocket on a TcpListener具有超时的对象 以便它偶尔被中断 TcpListener server new TcpListener localIP port server Start while sh
  • 使用 catch all 字典属性将 json 序列化为对象

    我想使用 JSON net 反序列化为对象 但将未映射的属性放入字典属性中 是否可以 例如给定 json one 1 two 2 three 3 和 C 类 public class Mapped public int One get se
  • Web 文本编辑器中的 RTF 格式

    网络上是否有支持 RTF 格式文档输入的文本编辑器 我知道这对 webdev 来说有点奇怪 但我需要从数据库中读取 RTF 文档 并在基于 Web 的文本编辑器中对其进行编辑 然后将其存储回 RTF 中 在我在转换工具上投入太多资金之前 我
  • 何时分离或加入 boost 线程?

    我有一个方法 大约每 30 秒触发一次 我需要在一个线程中包含它 我有一个可以从类外调用的方法 像 call Threaded Method 这样的东西会创建一个线程 该线程本身会调用最终的线程方法 这些是 MyClass 的方法 void
  • 在 Windows 上使用 C/C++ 开发时省略 msvcr100.dll?

    是否可以在 Windows 上使用 C C 进行开发而不链接到 msvcr100 dll 我知道这是 Windows 的标准 c 库 但我想知道如果我没有安装 Visual Studio 或 Redistributable 软件包 我的计算
  • XCode std::thread C++

    对于学校的一个小项目 我需要创建一个简单的客户端 服务器结构 它将在路由器上运行 使用 openWRT 并且我试图在这个应用程序中使用线程做一些事情 我的 C 技能非常有限 所以我在internet https stackoverflow
  • 使用 WinAPI 连接禁用的显示设备

    我的问题是启用禁用的监视器ChangeDisplaySettingsEx 我想这不是火箭科学 但经过一番挖掘后 它看起来仍然是不可能的 我找到了一种根据找到的 Microsoft 代码示例禁用所有辅助显示器的方法here https msd
  • 在 C# 窗口应用程序中运行 C/C++ 控制台应用程序?

    现在 我想开发一个简单的应用程序 因此我决定最快的编码方式是 C NET 但现在 我很难实现我需要的功能之一 我想做的是在 C 应用程序的窗口内运行 C C 控制台应用程序 就像在虚幻前端中一样 添加一点通信方式 以便我可以为控制台应用程序
  • Web API 2.0 使用 pascalcase 模型接收驼峰式命名的 JSON 数据

    我正在尝试对我的 Web API 进行 PUT 调用 我在 WebApiConfig cs 中设置了以下内容 以处理以驼峰形式将数据发送回我的 Web 项目 config Formatters JsonFormatter Serialize
  • C# 和断点 - 这里有魔术师吗?

    我有这个 public static void ByLinkText string text for var i 0 i lt 50 i try Setup Driver FindElement By LinkText text Click

随机推荐

  • VMware下载与安装

    VMware的简介 VMWare虚拟机软件是一个 虚拟PC 软件 它使你可以在一台机器上同时运行二个或更多Windows DOS LINUX系统 与 多启动 系统相比 VMWare采用了完全不同的概念 多启动系统在一个时刻只能运行一个系统
  • 扩散模型大杀器 ControlNet 解析

    Controlnet的介绍 1 论文信息 标题 Adding Conditional Control to Text to Image Diffusion Models 作者 Lvmin Zhang Maneesh Agrawala 原文链
  • Object.entries()方法使用详解

    一 概述 对象的数据处理方法 我们熟知的有很多 比如Object keys Object values for in等 本文将其与其它常见使用方法进行对比 详细解析其特性 二 对比 for in Object entries 方法的优势 1
  • Python计算过去周末的方法

    在Python中 我们可以使用datetime模块来计算过去的周末数量 datetime模块提供了各种日期和时间相关的函数和类 使我们可以轻松地处理日期和时间 首先 我们需要导入datetime模块 import datetime 然后 我
  • Vue自定义指令 「干货」

    在 Vue 除了核心功能默认内置的指令 v model 和 v show Vue 也允许注册自定义指令 它的作用价值在于当开发人员在某些场景下需要对普通 DOM 元素进行操作 Vue 自定义指令有全局注册和局部注册两种方式 先来看看注册全局
  • springboot修改端口号的两种方式

    前言 springboot默认的端口号为8080 端口号的配置有两种方式 一种是在配置文件application properties中 另一种是在配置文件application yml中 1 第一种方式 修改配置文件application
  • 最短路径-Dijkstra算法与Floyd算法

    最短路径 Dijkstra算法与Floyd算法 原文 https www cnblogs com smile233 p 8303673 html 一 最短路径 在非网图中 最短路径是指两顶点之间经历的边数最少的路径 AE 1 ADE 2 A
  • 【ubuntu22.04 安装优麒麟wine封装版微信】

    选择该版本原因 目前使用体验来说优于deepin封装版 1 到优麒麟软件下载页面找到微信 wine 下载Wine环境包和 微信 wine 包 2 终端输入 sudo apt get install f y ukylin wine 70 6
  • linux 环境下 openssl 生成ecdsa公、私钥

    我的个人博客 逐步前行STEP 1 生成ecdsa私钥 openssl ecparam name prime256v1 genkey noout out prime256v1 key pem 2 从ecdsa私钥提取公钥 openssl p
  • windows下anaconda3安装MySQLdb

    本文转自Windows下python3 6 安装MySQLdb 首先需要下载windows版本的mysqlclient 原作者给出了其中一个版本的下载链接 下载之后 放到合适的文件目录中 然后打开anaconda自带的Anaconda Pr
  • java使用switch语句完成输入1~12之间的整数,显示该月份的英语单词及这个月属第几季度。

    1 程序代码如下 package java实训 import java util Scanner public class SJ4 public static void main String args Scanner input new
  • AI Cloud将百花齐放,青云科技已先走了一步

    三年前 国家超级计算济南中心 济南超算 悄悄干了一件大事 投资数十亿元致力于打造一个融HPC超算 传统云计算 以CPU为主 和智算 以GPU为主 为一体的多元算力中心 这就需要一个统一的并且可以对外开放的运维和运营平台 那时还在打磨阶段的青
  • python注释快捷键 引号注释快捷键 注释字体样式调整

    python注释快捷键分为两种 单行注释 单行注释快捷键是CTRL list red green blue yellow white black print list 0 print list 1 print list 2 list red
  • VS E2996 错误过多,导致IntelliSense引擎无法正常工作。其中一些错误可能在编辑器中不可见。代码没有提示

    一 错误的问题描述 二 这个问题导致的后果 后面程序中用到的很多都会显示找不到定义 三 说实话这个问题真的很坑 由于我更换了我程序的工作电脑 我在VS中属性管理器中重新配置了头文件和对应的库目录 但是这里我犯了一个小错误 就是我更换的时候
  • QT开发技巧之QTableWidget设置表头颜色字体

    1 默认的表头和内容背景字体一样不好区别 可以通过qss设置修改表头样式 2 修改后效果如下 qss代码 表格头背景色 QHeaderView section background rgb 128 255 255 font family 宋
  • vue引入阿里图标 Module parse failed: Unexpected character '�' (1:0)

    操作根据文章 https blog csdn net qq 32113629 article details 79740949 在自己跟着试了一下后报错 Module parse failed Unexpected character 1
  • c++享元模式

    享元模式 1 享元模式简介 享元模式在 设计模式 可复用面向对象软件的基础 一书中是这样说的 运用共享技术有效地支持大量细粒度的对象 本质就是对大量细粒度的对象进行共享 不是每个对象都要通过new的方式去创建 而是通过区分对象的内部状态和外
  • 波形图、频谱图和语谱图

    波形图 反映各质点在同一时刻不同位移的曲线 叫做波的图像 也叫做波形图 波形图用于显示测量值为均匀采集的一条或多条曲线 波形图仅绘制单值函数 即在y f x 中 各点沿x轴均匀分布 例如一个随时间变化的波形 波形图可显示包含任意个数据点的曲
  • 消息通知之系统层事件发布相关流程

    前言 Openharmony 3 1Release中存在消息通知的处理 消息通知包括系统层事件发布 消息订阅 消息投递与处理 为了开发者能够熟悉消息的处理流程 本篇文章主要介绍系统层事件发布的相关流程 整体流程 代码流程 发布消息 even
  • c++ queue用法 入门必看 超详细

    1 queue的作用 说到queue 大家一定会想到stack 同样是简单易用的数据结构之一 queue就是队列的意思 像大家日常排队一样 先排的人先用 stack则是相反的 后来的先用 这就有了queue先进先出 stack后进先出的说法