c++的队列的用法

基本介绍

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

总结

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

广东Lenovo SR588服务器维修升级硬盘内存

本案例描述了对联想SR588服务器进行硬件升级的过程&#xff0c;包括更换固态硬盘作为系统盘&#xff0c;以及增加内存容量至128GB。升级后&#xff0c;服务器性能得到显著提升&#xff0c;同时通过重新配置RAID阵列和操作系统的重新安装&#xff0c;确保了系统的稳定性和数据的…

华为路由器 三层交换实现vlan通信 实验(附ensp实验源文件)

一、目标 通过三层交换实现vlan通信 二、网络配置 2.1 交换机1&#xff08;LSW1&#xff09;配置 # 创建两个vlan vlan 10 vlan 20# 配置g0/0/1端口 port link-type access port default vlan 10# 配置g0/0/2端口 port link-type access port default vlan 20# 配置g0/0/3端口…

STM32F1 - SPI读写Flash

Serial peripheral interface 1> 实验概述2> SPI硬件框图初始化程序 3> STM32的SPI通信时序3.1> 时序图3.2> 文字描述3.3> 注意事项3.4> 流程图表示3.5> 程序表示接收程序&#xff1a;发送程序&#xff1a; 4> SPI的4种模式5> W25Q128存储结构块…

开发知识点-Python-爬虫

爬虫 scrapybeautifulsoupfind_all find祖先/父节点兄弟节点nextpreviousCSS选择器属性值 attrsselect 后 class 正则使用字符串来描述、匹配一系列符合某个规则的字符串组成元字符使用grep匹配正则组与捕获断言与标记条件匹配正则表达式的标志 特定中文 匹配 scrapy scrapy内…

ssm+springboot音乐播放器网站mybatis+jsp

测试流程 &#xff08;1&#xff09; 登录系统、填写用户名、密码选择角色&#xff0c;主要内容&#xff1a;进行权限控制。 &#xff08;2&#xff09; 用户查看音乐信息、音乐资讯功能&#xff0c;主要是测试系统实用性、方便性。 &#xff08;3&#xff09; 信息修…

B084-SpringCloud-Zuul Config

目录 zuul系统架构和zuul的作用zuul网关实现配置映射路径过滤器 Config概述云端管理本地配置 zuul zuul是分布式和集群后前端统一访问入口 系统架构和zuul的作用 zuul把自己注册进eureka&#xff0c;然后可通过前端传来的服务名发现和访问对应的服务集群 为了预防zuul单点故…

在Java中处理JSON数据:Jackson与Gson库比较

引言 JSON&#xff0c;作为一种轻量级的数据交换格式&#xff0c;因其易于人阅读和编写&#xff0c;同时也易于机器解析和生成&#xff0c;而被广泛应用于网络通信和配置文件中。在Java中&#xff0c;有两个强大的工具帮助咱们处理JSON数据——Jackson和Gson。这两个库各有千秋…

Conda 快速入门,轻松拿捏 Python

一、简介 Conda 是一个开源的软件包管理系统和环境管理系统&#xff0c;用于安装多个版本的软件包及其依赖关系&#xff0c;并在它们之间轻松切换。Conda 是为 Python 程序创建的&#xff0c;适用于 Linux&#xff0c;OS X 和Windows&#xff0c;也可以打包和分发其他软件&…

teknoparrot命令行启动游戏

官方github cd 到teknoparrot解压目录 cd /d E:\mn\TeknoParrot2_cp1\GameProfiles启动游戏 TeknoParrotUi.exe --profile游戏配置文件游戏配置文件位置/UserProfiles,如果UserProfiles文件夹里没有那就在/GameProfiles,在配置文件里将游戏路径加入之间,或者打开模拟器设置 …

SpringCloud Alibaba 学习

一&#xff1a;SpringCloud Alibaba介绍 Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服 务的必需组件&#xff0c;方便开发者通过 Spring Cloud 编程模型轻松使用这些组件来开发分布式应用服务。 依托 Spring Cloud Alibaba&…

mybatis不重复列插入例子详细说明

之前有做过不重复列插入的需求&#xff0c;当时是 在插入时判断 对应的列在数据库中有没有对应的数据 有则返回false 无则插入&#xff0c;但是这加大了数据库的查询负担 也增加了插入的时间&#xff0c;故今天研究一下 使用sql来简化了这一点 使用的知识点是 daul表 insert i…

提升效率的电脑定时工具,AutoOff软件推荐

今天最软库给大家带来一款非常实用的电脑定时关机软件在我们日常办公的时候有的时候需要上传一些资料由于我们下班了&#xff0c;我们想让他上传完成之后我们才离开这时候呢&#xff0c;就可以用到这款定时工具了。 我们可以设置中设置在几小时或者几分钟之后让电脑进行关机我们…

JDK、JRE、JVM的联系区别

在第一章中我们介绍了JDK的下载配置与IDEA开发环境的下载安装&#xff0c;以及分别在这两个&#xff08;电脑本机和IDEA&#xff09;环境上执行了我们的第一个源程序。通过直观的使用&#xff0c;我们可以感受到集成开发环境的便捷。 大家也更加对JDK有了直观的了解&#xff0c…

【千字总结】爬虫学习指南-2024最新版

介绍 如何自学爬虫&#xff1f;今天有一个兄弟这样问我&#xff0c;可以看到打了很多字&#xff0c;诚意肯定是很足的&#xff0c;也是对我的内容给予了肯定&#xff0c;让我非常的开心。既然难得有人问我&#xff0c;那我一定要好好做一个回答。 我下面将要说的内容没有任何话…

制作耳机壳的UV树脂和塑料材质相比优势有哪些?

制作耳机壳的UV树脂相比塑料材质有以下优势&#xff1a; 高强度与耐磨性&#xff1a;UV树脂具有高强度和耐磨性&#xff0c;能够更好地保护耳机内部零件&#xff0c;延长耳机使用寿命。相比之下&#xff0c;塑料材质可能较易磨损或刮伤。耐高温&#xff1a;UV树脂具有较好的耐…

探索Java开发面试笔记:以听为目的,助力编程技术提升与面试准备

文章目录 一、制作背景介绍二、 Java开发面试笔记&#xff1a;为你的编程之路加速2.1 公众号主题和目标读者群体2.2 为什么面试笔记对于提高编程视野和技术至关重要2.3 親測效率 三、形式案例3.1 文章形式3.2 手机案例3.3 电脑案例 一、制作背景介绍 做公众号的背景&#xff1a…

瑞_23种设计模式_享元模式

文章目录 1 享元模式&#xff08;Flyweight Pattern&#xff09;1.1 介绍1.2 概述1.3 享元模式的结构1.4 享元模式的优缺点1.5 享元模式的使用场景 2 案例一2.1 需求2.2 代码实现 3 案例二3.1 需求3.2 代码实现 4 JDK源码解析&#xff08;Integer类&#xff09; &#x1f64a; …

公园常见污水处理需要哪些设备

根据我了解的情况&#xff0c;公园常见的污水处理需要以下几种设备&#xff1a; 1、格栅机&#xff1a;格栅机是污水处理的第一道工序&#xff0c;用于过滤掉污水中的大颗粒杂物和固体废物&#xff0c;防止其进入后续处理装置。 2、沉淀池&#xff1a;沉淀池用于将污水中的悬浮…

Platformview在iOS与Android上的实现方式对比

Android中早期版本Platformview的实现基于Virtual Display。VirtualDisplay方案的原理是&#xff0c;先将Native View绘制到虚显&#xff0c;然后Flutter通过从虚显输出中获取纹理并将其与自己内部的widget树进行合成&#xff0c;最后作为Flutter在 Android 上更大的纹理输出的…

MySQL·SQL优化

目录 一 . 前言 二 . 优化方法 1 . 索引 &#xff08;1&#xff09;数据构造 &#xff08;2&#xff09;单索引 &#xff08;3&#xff09;explain &#xff08;4&#xff09;组合索引 &#xff08;5&#xff09;索引总结 2 . 避免使用select * 3 . 用union all代替u…