STL --- 2、容器 (7)queue

news/2024/10/17 22:21:35/

目录

1、std::queue 的基本操作

2、std::queue 队列的应用场景

3、std::queue 实例


队列(Queue)是一种先进先出(FIFO)的数据结构,类似于现实生活中排队等待服务的场景。队列中的元素只能在队列的末尾添加,只能从队列的开头删除。

1、std::queue 的基本操作

(1)入队(enqueue):出队将队列的第一个元素删除并返回;

(2)出队(dequeue):入队将元素添加到队列的末尾。

1. enqueue(item):将元素添加到队列的末尾。
2. dequeue():从队列的头部删除并返回元素。
3. front():返回队列头部的元素,但不删除它。
4. size():返回队列中元素的个数。
5. empty():检查队列是否为空。
6. clear():清空队列中的所有元素。
7. push(item):将元素添加到队列的末尾(与enqueue()相同)。
8. pop():从队列的头部删除并返回元素(与dequeue()相同)。
9. back():返回队列尾部的元素,但不删除它。
10. swap(queue2):将当前队列与另一个队列交换。

队列可以用数组或链表实现,可以用于解决许多问题,如广度优先搜索、缓存、任务调度等。

2、std::queue 队列的应用场景

(1)任务调度:将任务加入队列,按照先进先出的顺序执行。

(2)消息队列:将消息加入队列,按照先进先出的顺序进行处理。

(3)缓存:缓存数据时,可以使用队列来限制缓存大小,当缓存满时,将最早加入的数据删除。

(4)广度优先搜索:在图中进行广度优先搜索时,可以使用队列保存待访问的节点。

队列的时间复杂度为O(1),因为入队和出队操作只需要常量时间。

3、std::queue 实例

#include <iostream>
#include <queue>int main()
{std::queue<int> q;q.push(1);q.push(2);q.push(3);std::cout << "队列中元素的数量为:" << q.size() << std::endl;std::cout << "队首元素为:" << q.front() << std::endl;q.pop();std::cout << "弹出队首元素后,队首元素为:" << q.front() << std::endl;return 0;
}


http://www.ppmy.cn/news/79823.html

相关文章

局部最小值问题

局部最小值问题 自写&#xff1a; // arr 相邻的数不相等&#xff01; 返回一个局部最小的下标public static int oneMinIndex(int[] arr) {if(arr null || arr.length 0) {return -1;}if(arr.length 1) {return 0;}int L 0;int R arr.length - 1;if(arr[L] < arr[L 1…

ARM的状态传送器指令、软中断指令与协处理指令(软中断具体实现)

1.状态寄存器传送指令: 作用&#xff1a;访问&#xff08;读写&#xff09;CPSR寄存器 CPSR寄存器结构图&#xff1a; 前八位的作用&#xff1a; Bit[4:0] &#xff1a;不同的电平组合表示不同的模式&#xff0c;[10000]User [10001]FIQ [10010]IRQ [10011]SVC …

分布式运用之ELK企业级日志分析系统

1.ELK的相关知识 1.1 ELK的概念与组件 ELK平台是一套完整的日志集中处理解决方案&#xff0c;将 ElasticSearch、Logstash 和 Kiabana 三个开源工具配合使用&#xff0c; 完成更强大的用户对日志的查询、排序、统计需求。 ElasticSearch&#xff1a; 是基于Lucene&#xff0…

浅析Koa2中控制器

控制器 什么是控制器 拿到路由分配的任务&#xff0c;并执行 路由的功能是根据不同的 url, 来分配不同的任务。 控制器是拿到路由分配的任务并执行&#xff0c;是注册在路由中的中间件。 所以在 koa 中, 控制器也是一个中间件。 为什么要使用控制器 获取HTTP请求参数处理…

Unix/C/C++进阶--线程 pthread_creat() return 1失败

Unix/C/C进阶--pthread_creat return 1失败 1 介绍1.1 man pthread_create1.2 一般失败原因1.3 最大进程/线程数&#xff08;理论&#xff09;1.3 最大进程/线程数&#xff08;实际&#xff09;1.4 查看Linux实际运行的总线程数1.5 查看运行的进程1.6 查看进程信息1.7 top -H 一…

qt quick(qml)通过arcgis导入自定义格式地图(Windows 版本)

参考ArcGIS Maps SDK for Qt 参考Display a map 安装 预先安装的软件 安装ArcGIS SDK 点击ArcGIS Maps SDK for Qt 注册账号 要注册成developer版本用户的&#xff0c;不然之后可能没办法生成API 下载 下载之后安装&#xff0c;一路next就可以了 在QT中创建ArcGIS项目…

一种适用于大量租户大量角色权限系统设计

前言 权限管理是每个系统不可缺少的一部分&#xff0c;大部分开发者应该都设计过权限管理系统&#xff0c;很多开发者学习的第一个项目可能就是权限管理系统。但是常见的权限设计在租户量非常大、角色数量非常多时会存在角色权限表数据量指数增长的情况&#xff0c;本文介绍一…

自动化测试与手工测试?你真的了解吗?如何共存...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 Python自动化测试&…