c++的队列的用法

news2024/11/17 16:30:15

基本介绍

c++的队列就是std::queue。
在这里插入图片描述

需要包含的头文件:

#include<queue>

queue就是先进先出队列

queue,就是队列,队列是一种容器适配器,专门设计用于在FIFO上下文中操作(先进先出),其中将元素插入容器的一端并从另一端提取。
队列是作为容器适配器实现的,容器适配器是使用特定容器类的封装对象作为其底层容器的类,提供一组特定的成员函数来访问其元素。元素被推入特定容器的“后面”,并从其“前面”弹出。
底层容器可以是标准容器类模板之一,也可以是其他专门设计的容器类。该底层容器应至少支持以下操作:
empty
size
front
back
push_back
pop_front
标准容器类deque和list满足这些要求。默认情况下,如果没有为特定队列类实例化指定容器类,则使用标准容器队列。

queue的模板参数

T
元素的类型。
别名为成员类型queue::value_type。
Container
存储元素的内部底层容器对象的类型。
其value_type应为T。
别名为成员类型queue::container_type。

queue的常用函数

back() //返回队列中最后一个元素 
empty() //判断队列是否为空 
front() //返回队列中的第一个元素 
pop() //删除队列的第一个元素 
push() //在队列末尾加入一个元素 
size() //返回队列中元素的个数 

queue的实例

演示了队列的基本操作:

#pragma execution_character_set("utf-8")
#include <QCoreApplication>
#include <QString>
#include <QMap>
#include <queue>
#include <iostream>
#include <QTextCodec>
#include <QDebug>
using namespace std;
typedef struct _Student
{
    QString name;
    QMap<QString,QByteArray> scoreMap;
}Student;
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    //QTextCodec *codec = QTextCodec::codecForName("UTF-8");
    //QTextCodec::setCodecForLocale(codec);
//    qDebug() << QStringLiteral("2中文");
//    qDebug() << QString::fromLatin1("3中文");
//    qDebug() << QString::fromLocal8Bit("4中文");
//    qDebug() << QString::fromUtf8("5中文");
//    qDebug() << QString::fromWCharArray(L"6中文");
    queue<Student> q; //定义一个数据类型为int的queue
    Student stu1;
    stu1.name = QString::fromUtf8("小明");
    QMap<QString, QByteArray> scoreMap1;
    scoreMap1.insert(QString::fromUtf8("语文"), "80");
    stu1.scoreMap = scoreMap1;
    q.push(stu1); //向队列中加入元素1
    Student stu2;
    stu2.name = QString::fromUtf8("小李");
    QMap<QString, QByteArray> scoreMap2;
    scoreMap2.insert(QString::fromUtf8("语文"), "81");
    stu2.scoreMap = scoreMap2;
    q.push(stu2); //向队列中加入元素2
    Student stu3;
    stu3.name = QString::fromUtf8("小王");
    QMap<QString, QByteArray> scoreMap3;
    scoreMap3.insert(QString::fromUtf8("语文"), "82");
    stu3.scoreMap = scoreMap3;
    q.push(stu3); //向队列中加入元素3
    Student stu4;
    stu4.name = QString::fromUtf8("小张");
    QMap<QString,QByteArray> scoreMap4;
    scoreMap4.insert(QString::fromUtf8("语文"), "83");
    stu4.scoreMap = scoreMap4;
    q.push(stu4); //向队列中加入元素4
    qDebug()<<"将元素1、2、3、4一一加入队列中后,队列中现在的元素为:1、2、3、4";
    qDebug()<<"队列中的元素个数为:"<<q.size()<<endl;
    //判断队列是否为空
    if(q.empty())
    {
        qDebug()<<"队列为空";
    }
    else
    {
        qDebug()<<"队列不为空";
    }
    qDebug()<<"队列的队首元素为:"<<q.front().name<<"得分: "<<q.front().scoreMap["语文"];
    //队列中的队首元素出队
    q.pop();
    qDebug()<<"after pop 队列的队首元素为:"<<q.front().name<<"得分: "<<q.front().scoreMap["语文"];
    qDebug()<<"将队列队首元素出队后,现在队列中的元素为2、3、4";
    return a.exec();
}

运行情况:

将元素1234一一加入队列中后,队列中现在的元素为:1234
队列中的元素个数为: 4
队列不为空
队列的队首元素为: "小明" 得分:  "80"
after pop 队列的队首元素为: "小李" 得分:  "81"
将队列队首元素出队后,现在队列中的元素为234

总结

队列是操作受限的线性表 限定在只能在表的一端进行插入 在表的另一端进行删除。
和日常生活中的排队是类似的道理。
根据上面的示例可以得出如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1491438.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LangChain 教程:构建 LLM 支持的应用程序的指南

作者&#xff1a;Aditya Tripathi GPT-4 和 LLaMA 等大型语言模型 (LLM) 在过去几年中创造了一个充满可能性的世界。 它预示着人工智能工具和应用程序的繁荣&#xff0c;ChatGPT 似乎一夜之间成为家喻户晓的名字。 但如果没有为促进新一代应用程序而创建的强大工具和框架&#…

【面试题】webpack的五大核心、构建流程、性能优化

【面试题】webpack的五大核心、webpack的构建流程、webpack的性能优化 webpack是什么?webpack的五大核心webpack的构建流程webpack性能优化 webpack是什么? js静态模块打包工具。 功能 将多个文件打包成更小的文件&#xff0c;(压缩)翻译 babal-loader es6进行降级兼容。 …

【pyinstaller打包记录】Linux系统打包可执行文件后,onnxruntime报警告(Init provider bridge failed)

简介 PyInstaller 是一个用于将 Python 程序打包成可执行文件&#xff08;可执行程序&#xff09;的工具。它能够将 Python 代码和其相关的依赖项&#xff08;包括 Python 解释器、依赖的模块、库文件等&#xff09;打包成一个独立的可执行文件&#xff0c;方便在不同环境中运行…

如何根据企业司法涉诉大数据合理规避风险?

在当前的商业环境中&#xff0c;企业司法涉诉的信息越来越成为衡量一家企业信誉和运营风险的重要标准。大数据时代的到来&#xff0c;让我们有了更加丰富的手段对这些信息进行挖掘与分析&#xff0c;从而对企业可能面临的风险进行预警。本文将探讨如何通过对企业司法涉诉的大数…

服务器硬件监控,保障系统稳健运行的关键策略

服务器硬件在运维中扮演着至关重要的角色&#xff0c;超过一半的网络中断是由硬件故障引起的&#xff0c;这使得硬件性能监控成为运维中不可或缺的一部分。对于一个组织或企业的信息技术基础设施而言&#xff0c;重要性不言而喻&#xff1a; 1. 安全性&#xff1a;服务器硬…

虚拟内存地址动静态库

前言 大家好我是jiantaoyab&#xff0c;这是我所总结作为学习的笔记第5篇,在这里分享给大家,还有一些书籍《[深入理解计算机系统》《计算机组成&#xff1a;结构化方法》《计算机体系结构&#xff1a;量化研究方法》《程序员的自我修养》&#xff0c;今天我们来了解程序的虚拟…

聚观早报 | 2024款腾势D9将发布;岚图汽车2月销量

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 3月2日消息 2024款腾势D9将发布 岚图汽车2月销量 苹果Vision Pro防汗新专利 真我12 Pro正式开售 Redmi K70/Pro…

wvp-gb28181-pro国标设备录像下载

点击【国标设备】&#xff0c;进入设备通道 每个通道右边都有对应的操作&#xff0c; 点击操作栏中的【设备录像】按钮 点击【设备录像】进入录像查看页面&#xff0c;选择要查看的日期即可对录像进行播放和下载 播放&#xff1a;双击录像名称 下载&#xff1a;点击下载按钮 下…

SpringBoot实现分页模糊查询

1. Navicat查询数据 Navicat中查询所有数据 SELECT * FROM sys_user;Navicat中查询前两条数据&#xff08;俩种方式&#xff09; SELECT * FROM sys_user LIMIT 2; //从0开始&#xff0c;第一个参数是起始位置即(pageNum-1)*pageSize&#xff0c;第二个参数是步长 SELECT * …

一文搞定Pytorch CUDA Toolkit与Driver的关系

1. 在我们使用Pytorch不同的版本时&#xff0c;有这样一个大致的对应关系&#xff0c;即&#xff1a;Pytorch版本CUDA Toolkit版本NVIDIA Driver 版本。 难点在于CUDA版本与Driver版本的关系&#xff0c;简单通过NVIDIA官网解决&#xff1a;CUDA Compatibility 这里既有关于Li…

JavaScript的`call`方法:实现函数间的调用!

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Golang 程序启动原理详解

一.编译 go源代码首先要通过 go build 编译为可执行文件,然后去机器上直接执行的&#xff0c;在 linux 平台上为 ELF 格式的可执行文件&#xff0c;linux 能直接执行这个文件,而编译阶段会经过编译器、汇编器、链接器三个过程最终生成可执行文件 编译器&#xff1a;*.go 源码通…

基于“xxx” Androidx平台的驱动及系统开发 之 触摸板篇

目录 一、基于全志 A133 Android10平台&#xff0c;适配1366x768 - ilitek2511触摸1、原理图分析2、驱动移植与适配3、补丁和资源文件 二、基于瑞芯微 RK3566 Android11平台&#xff0c;适配GT9XX触摸1、原理图分析2、补丁及资源文件 三、遇到的问题与解决1、基于amlogic Andro…

【Leetcode】1588.所有奇数长度子数组的和

题目描述 思路 题目要求我们求解所有奇数长度数组的和。若暴力循环求解&#xff0c;时间复杂度过高。所以&#xff0c;我们可以采用前缀和优化。 如上图输入arr数组&#xff0c;sum[i]用于计算arr数组中前i个数的和。(在程序中&#xff0c;先给sum[0]赋值&#xff0c;等于arr[0…

python.模块与包

1.模块是什么 本质上是一种python文件&#xff0c;以.py结尾&#xff0c;里面有类&#xff0c;函数&#xff0c;变量等&#xff0c;认为这是一个工具包&#xff0c;每个模块有不同的功能&#xff0c;导入后可以直接使用 2.模块的导入 方法1 import 模块名 使用&#xff1a…

LLM 模型量化推理速度评测

最近了解了下些常见的推理和加速方案&#xff1a; 1、量化方案&#xff1a; gptq、quantization、int8、int4、AWQ、Speculative Decoding、GGUF 2、Attention加速方案&#xff1a; atten的不同种类fused attention 3、内存层面&#xff1a; kv_cache策略、page_attention…

洛谷 P1083 [NOIP2012 提高组] 借教室(二分+差分)

题目链接&#xff1a; P1083 [NOIP2012 提高组] 借教室 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 在大学期间&#xff0c;经常需要租借教室。大到院系举办活动&#xff0c;小到学习小组自习讨论&#xff0c;都需要向学校申请借教室。教室的大小功能不同&#xff0c;借教…

YOLO系列中的“data.yaml”详解!

专栏介绍&#xff1a;YOLOv9改进系列 | 包含深度学习最新创新&#xff0c;主力高效涨点&#xff01;&#xff01;&#xff01; 一、data.yaml介绍 YOLO系列中的data.yaml文件包含了YOLO系列模型运行所需要的数据集路径、数据集中的类别数及标签。数据集路径可以用绝对路径也可以…

计算机系统缺少cv100.dll文件解决方法(最新)

cv100.dll 是一个Windows操作系统中的动态链接库&#xff08;DLL&#xff09;文件。DLL文件是包含可由多个程序共享的代码和数据的模块&#xff0c;以减少磁盘空间占用并提高系统性能。根据收集到的信息&#xff0c;cv100.dll 文件可能与图像处理、计算机视觉相关的功能有关。 …

#WEB前端(JS基础语法)

1.实验&#xff1a; 2.IDE&#xff1a;VSCODE 3.记录&#xff1a; &#xff08;1&#xff09;数据类型 var&#xff0c;let&#xff0c;const var,let声明变量&#xff0c;const声明常量。var声明的变量具有函数作用域,let声明的变量具有块级作用域&#xff0c;let跟安全更…