C++ STL 队列queue详细使用教程
序言
我们平常写广搜什么,上来就是一句
queue<XXX> qu;说明队列时很重要的。
STL库中的queue把队列的各种操作封装成一个类,非常方便,信奥中使用它也是很有优势的。
目录
一、队列的定义
二、创建队列对象
三、队列的初始化
四、常用函数
一、队列的定义
←出队[ ] [ ] [ ] [ ]入队←
队列是一种先进先出(FIFO)的数据结构的数据结构,它只能在一端入队,在一端出队,正是这一特点让它有许多用处,比如广度优先搜索等。
二、创建队列对象
queue<类型> qu;尖括号里边填的是队列中元素的类型。
queue<int> qu;如填写int那么队列中的元素都是int类型的。
struct Node {int x;int y;int step; };queue<Node> qu;以此类推,如果填的是Node那元素都是Node类型的。
三、队列的初始化
以下是常见的几种初始化方法。
queue<int> qu; // 初始化一个空的队列queue<int> qu({1, 2, 3, 4, 5}); // 创建一个队列,有元素{1, 2, 3, 4, 5}queue<int> qu({1, 2, 3, 4, 5}); queue<int> newQu(qu); // 从其它队列复制
四、常用函数
qu.empty()
返回类型 bool 声明 inline bool std::queue<XXX>::empty() const qu.empty() == true表示队列为空 qu.empty() == false表示队列非空qu.size()
返回类型 size_t 可以强制转换为int 声明 inline std::size_t std::queue<XXX>::size() const qu.size()表示队列元素的个数qu.front()
返回类型 XXX 即队列元素的类型 声明 inline XXX &std::queue<XXX>::front() qu.front()返回的是队列的头部第一个元素qu.back()
返回类型 XXX 即队列元素的类型 声明 inline XXX &std::queue<XXX>::back() qu.back()返回的是队列的尾部第一个元素qu.push(a)
返回类型 void 声明 inline void std::queue<XXX>::push(const XXX &__x) qu.push(a) 将元素a压入队列尾部qu.pop()
返回类型 void 声明 inline void std::queue<XXX>::pop() qu.pop() 将队列头部第一个元素移除qu.emplace(...)
返回类型 XXX 声明 inline XXX &std::queue<XXX>::emplace<int, int>(int &&__args, int &&__args) 它同push也用于在队列尾部压入成员,以下演示它的优势。struct XXX {int a, b;XXX(int x, int y) {a = x;b = y;} };int main() {queue<XXX> qu;qu.emplace(1, 2); // 此处直接构造XXX类型的对象,无需自己构建。// 该函数将返回一个XXX类型的对象,即我们当场构造的那个对象cout << qu.front().a << " " << qu.front().b << endl;return 0; }qu.swap(x)
返回类型 void 声明 inline void std::queue<XXX>::swap(std::queue<XXX> &__q) noexcept(true) qu.swap(qu2) 或 qu2.swap(qu) 都可以将qu与qu2中的元素进行交换
相关文章:
C++ STL 队列queue详细使用教程
序言 我们平常写广搜什么,上来就是一句 queue<XXX> qu; 说明队列时很重要的。 STL库中的queue把队列的各种操作封装成一个类,非常方便,信奥中使用它也是很有优势的。 目录 一、队列的定义 二、创建队列对象 三、队列的初始化 四、常…...
【前端】JavaScript 中的 filter() 方法的理论与实践深度解析
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: 前端 文章目录 💯前言💯filter() 方法的概念与原理1. 什么是 filter()?2. 基本工作原理3. 方法特点4. 用法格式参数解析 💯代码案例详解示例:筛选有效数字并…...
【机器学习算法】——决策树之集成学习:Bagging、Adaboost、Xgboost、RandomForest、XGBoost
集成学习 **集成学习(Ensemble learning)**是机器学习中近年来的一大热门领域。其中的集成方法是用多种学习方法的组合来获取比原方法更优的结果。 使用于组合的算法是弱学习算法,即分类正确率仅比随机猜测略高的学习算法,但是组合之后的效果仍可能高于…...
JVM运行时数据区内部结构
VM内部结构 对于jvm来说他的内部结构主要分成三个部分,分别是类加载阶段,运行时数据区,以及垃圾回收区域,类加载我们放到之后来总结,今天先复习一下类运行区域 首先这个区域主要是分成如下几个部分 下面举个例子来解释…...
Navicat for MySQL 查主键、表字段类型、索引
针对Navicat 版本11 ,不同版本查询方式可能不同 1、主键查询 (重点找DDL!!!) 方法(1) :右键 - 对象信息 - 选择要查的表 - DDL - PRIMARY KEY 方法(2&…...
如何在谷歌浏览器中实现自定义主题
在数字化时代,个性化设置已成为提升用户体验的重要一环。对于广泛使用的谷歌浏览器而言,改变默认的浏览器主题不仅能够美化界面,还能在一定程度上提升使用效率和愉悦感。本文将详细介绍如何在谷歌浏览器中实现自定义主题,包括从官…...
visual studio 2022 c++使用教程
介绍 c开发windows一般都是visual studio,linux一般是vscode,但vscode调试c不方便,所以很多情况都是2套代码,在windows上用vs开发方便,在转到linux。 安装 1、官网下载vs2022企业版–选择桌面开发–安装位置–安装–…...
曝光三要素
一光圈 光圈越大,数值越小,画面越亮,背景越模糊 光圈越小,数值越大,画面越暗,背景越清晰 二 快门 快门最主要的作用是控制曝光时间的长短 快门速度的单位是秒,一般用 1秒,1/8秒&am…...
01-2 :PyCharm安装配置教程(图文结合-超详细)
一、PyCharm安装 PyCharm集成开发工具(IDE),是当下全球Python开发者,使用最频繁的工具软件。 绝大多数的Python程序,都是在PyCharm工具内完成的开发。 本篇文章基于PyCharm软件工具进行描述,教你如何安装…...
类OCSP靶场-Kioptrix系列-Kioptrix Level 1
一、前情提要 二、实战打靶 1. 信息收集 1.1. 主机发现 1.2. 端口扫描 1.3 目录爆破 1.4. 敏感信息 2.根据服务搜索漏洞 2.1. 搜索exp 2.2. 编译exp 2.3. 查看exp使用方法,并利用 3. 提权 二、第二种方法 一、前情提要 Kioptrix Level是免费靶场&#x…...
Maven插件打包发布远程Docker镜像
dockerfile-maven-plugin插件的介绍 dockerfile-maven-plugin目前这款插件非常成熟,它集成了Maven和Docker,该插件的官方文档地址如下: 地址:https://github.com/spotify/dockerfile-maven 其他说明: dockerfile是用…...
VisualStudio vsix插件自动加载
本文介绍如何在Visual Studio扩展中实现PackageRegistration,包括设置UseManagedResourcesOnly为true,允许背景加载,并针对C#、VB、F#项目提供自动装载,附官方文档链接。增加以下特性即可…… [PackageRegistration(UseManagedRe…...
Codesoft许可管理
在数字化时代,软件许可管理对于确保企业资产安全、优化成本和提高工作效率至关重要。Codesoft作为一款功能强大的标签设计软件,其许可管理功能同样出色。本文将为您介绍如何进行Codesoft的许可管理,确保您的软件投资得到最大回报。 一、了解…...
Unity3D 3D模型/动画数据压缩详解
前言 在Unity3D项目中,3D模型和动画数据通常占用大量内存和存储空间,有效的数据压缩技术对于提升游戏性能和加载速度至关重要。本文将详细介绍Unity3D中3D模型和动画数据的压缩技术,并提供相关的代码实现。 对惹,这里有一个游戏…...
ffmpeg和ffplay命令行实战手册
文章目录 视频拼接用concat视频分段拼接(ffplay 不可调用seek函数进行seek)给视频添加黑边,让视频填充并居中显示不同分辨率视频分段拼接,并且,设置单个视频的缩放比例和摆放位置视频画中画复杂嵌套用overlay(ffplay 可调用seek函数进行seek)…...
基于MobileNet v2模型的口罩实时检测系统实现
基于kaggle数据集训练的模型其实现结果如下: 代码结构如下: 实时口罩检测器: 从导航栏中的链接“实时的口罩检测器”功能,该系统包含一个实时检测用户是否佩戴口罩的功能。基于图片的口罩检测器: 从另一个导航链接“基…...
NEEP-EN2-2023-Section5PartB
题目 个人答案 The chart depicts the outcomes of a survey conducted in a specific university regarding the acquisition of practical activity in class. The chart illustrates that learning knowledges accounts for 91.3 percent, which is the highest percentage…...
PostgreSQL17.x数据库备份命令及语法说明
PostgreSQL17.x数据库备份命令及语法说明 文章目录 PostgreSQL17.x数据库备份命令及语法说明1. 备份命令1. pg_dump命令参数2. pg_dumpall命令参数 2. pg_dump 备份单库语法3. pg_dumpall 备份所有数据库语法4. 备份案例1. pg_dump单库备份2.pg_dumpall单库备份 4. 备份案例1. …...
Java实现一个带头节点的单链表
什么是单链表? 单链表是一种基础的数据结构,其中每个节点都包含两部分: 数据域:存储节点数据。指针域:存储指向下一个节点的引用。 为什么使用头节点? 头节点的存在简化了操作逻辑: 统一操作…...
【图像配准】方法总结
图像配准(Image registration)就是将不同时间、不同传感器(成像设备)或不同条件下(天候、照度、摄像位置和角度等)获取的两幅或多幅图像进行匹配、叠加的过程,就是找到1幅图像像素到另1幅图像像素间的空间映射关系它已…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...
企业大模型服务合规指南:深度解析备案与登记制度
伴随AI技术的爆炸式发展,尤其是大模型(LLM)在各行各业的深度应用和整合,企业利用AI技术提升效率、创新服务的步伐不断加快。无论是像DeepSeek这样的前沿技术提供者,还是积极拥抱AI转型的传统企业,在面向公众…...
机器学习的数学基础:线性模型
线性模型 线性模型的基本形式为: f ( x ) ω T x b f\left(\boldsymbol{x}\right)\boldsymbol{\omega}^\text{T}\boldsymbol{x}b f(x)ωTxb 回归问题 利用最小二乘法,得到 ω \boldsymbol{\omega} ω和 b b b的参数估计$ \boldsymbol{\hat{\omega}}…...
向量几何的二元性:叉乘模长与内积投影的深层联系
在数学与物理的空间世界中,向量运算构成了理解几何结构的基石。叉乘(外积)与点积(内积)作为向量代数的两大支柱,表面上呈现出截然不同的几何意义与代数形式,却在深层次上揭示了向量间相互作用的…...
大模型真的像人一样“思考”和“理解”吗?
Yann LeCun 新研究的核心探讨:大语言模型(LLM)的“理解”和“思考”方式与人类认知的根本差异。 核心问题:大模型真的像人一样“思考”和“理解”吗? 人类的思考方式: 你的大脑是个超级整理师。面对海量信…...
VSCode 没有添加Windows右键菜单
关键字:VSCode;Windows右键菜单;注册表。 文章目录 前言一、工程环境二、配置流程1.右键文件打开2.右键文件夹打开3.右键空白处打开文件夹 三、测试总结 前言 安装 VSCode 时没有注意,实际使用的时候发现 VSCode 在 Windows 菜单栏…...
二维数组 行列混淆区分 js
二维数组定义 行 row:是“横着的一整行” 列 column:是“竖着的一整列” 在 JavaScript 里访问二维数组 grid[i][j] 表示 第i行第j列的元素 let grid [[1, 2, 3], // 第0行[4, 5, 6], // 第1行[7, 8, 9] // 第2行 ];// grid[i][j] 表示 第i行第j列的…...
【2D与3D SLAM中的扫描匹配算法全面解析】
引言 扫描匹配(Scan Matching)是同步定位与地图构建(SLAM)系统中的核心组件,它通过对齐连续的传感器观测数据来估计机器人的运动。本文将深入探讨2D和3D SLAM中的各种扫描匹配算法,包括数学原理、实现细节以及实际应用中的性能对比,特别关注…...
