当前位置: 首页 > news >正文

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中的元素进行交换
http://www.lryc.cn/news/504775.html

相关文章:

  • 【前端】JavaScript 中的 filter() 方法的理论与实践深度解析
  • 【机器学习算法】——决策树之集成学习:Bagging、Adaboost、Xgboost、RandomForest、XGBoost
  • JVM运行时数据区内部结构
  • Navicat for MySQL 查主键、表字段类型、索引
  • 如何在谷歌浏览器中实现自定义主题
  • visual studio 2022 c++使用教程
  • 曝光三要素
  • 01-2 :PyCharm安装配置教程(图文结合-超详细)
  • 类OCSP靶场-Kioptrix系列-Kioptrix Level 1
  • Maven插件打包发布远程Docker镜像
  • VisualStudio vsix插件自动加载
  • Codesoft许可管理
  • Unity3D 3D模型/动画数据压缩详解
  • ffmpeg和ffplay命令行实战手册
  • 基于MobileNet v2模型的口罩实时检测系统实现
  • NEEP-EN2-2023-Section5PartB
  • PostgreSQL17.x数据库备份命令及语法说明
  • Java实现一个带头节点的单链表
  • 【图像配准】方法总结
  • LabVIEW汽车综合参数测量
  • 三相异步电动机没有气压怎么办?
  • 软件工程书籍推荐
  • 验证集和测试集的区别
  • OpenIPC开源FPV之Adaptive-Link天空端代码解析
  • Next.js流量教程:核心 Web Vitals的改善
  • 百度智能云千帆AppBuilder升级,百度AI搜索组件上线,RAG支持无限容量向量存储!
  • 构建树莓派温湿度监测系统:从硬件到软件的完整指南
  • 12.11数据结构-图
  • BERT模型入门(2)BERT的工作原理
  • python3 中的成员运算符