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的queueStudent stu1;stu1.name = QString::fromUtf8("小明");QMap<QString, QByteArray> scoreMap1;scoreMap1.insert(QString::fromUtf8("语文"), "80");stu1.scoreMap = scoreMap1;q.push(stu1); //向队列中加入元素1Student stu2;stu2.name = QString::fromUtf8("小李");QMap<QString, QByteArray> scoreMap2;scoreMap2.insert(QString::fromUtf8("语文"), "81");stu2.scoreMap = scoreMap2;q.push(stu2); //向队列中加入元素2Student stu3;stu3.name = QString::fromUtf8("小王");QMap<QString, QByteArray> scoreMap3;scoreMap3.insert(QString::fromUtf8("语文"), "82");stu3.scoreMap = scoreMap3;q.push(stu3); //向队列中加入元素3Student stu4;stu4.name = QString::fromUtf8("小张");QMap<QString,QByteArray> scoreMap4;scoreMap4.insert(QString::fromUtf8("语文"), "83");stu4.scoreMap = scoreMap4;q.push(stu4); //向队列中加入元素4qDebug()<<"将元素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.hqwc.cn/news/512254.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python爬虫实战第三例【三】【上】

零.实现目标 爬取视频网站视频 视频网站你们随意&#xff0c;在这里我选择飞某速&#xff08;狗头保命&#xff09;。 例如&#xff0c;作者上半年看过的“铃芽之旅”&#xff0c;突然想看了&#xff0c;但是在正版网站看要VIP&#xff0c;在盗版网站看又太卡了&#xff0c;…

【论文阅读】《Graph Neural Prompting with Large Language Models》

文章目录 0、基本信息1、研究动机2、创新点3、准备3.1、知识图谱3.2、多项选择问答3.3、提示词工程&#xff08;prompt engineering&#xff09; 4、具体实现4.1、提示LLMs用于问答4.2、子图检索4.3、Graph Neural Prompting4.3.1、GNN Encoder4.3.2、Cross-modality Pooling4.…

vscode 引入外部依赖包

背景 我要在vscode中写一些antlr代码生成的cpp代码&#xff0c;但是在引入头文件#include "antlr4-runtime.h"的时候&#xff0c;出现报错&#xff0c;显示没有这个头文件&#xff0c;显然这是我们没有导入相关的包&#xff0c;因此我首先尝试了将antlr4的依赖源码在…

nginx+Tomcat(反向代理、动静分离、负载均衡)

目录 前言 一、nginx和tomcat组合的架构 二、案例操作 前言 tomcat服务既可以处理动态页面&#xff0c;也可以处理静态页面&#xff1b;但其处理静态页面的速度远远不如nginx和apache服务&#xff0c;但ngingx和apache服务无法直接处理动态页面&#xff0c;下文就讲述了ngi…

windows安装pytorch(anaconda安装)

文章目录 前言一、安装anaconda1、进入官网下载&#xff08;1&#xff09;点击view all Installers&#xff08;2&#xff09;下载需要的版本 2、一顿默认安装就行&#xff08;到这一步这样填&#xff09;3、进入开始找到Anaconda Prompt&#xff0c;点击进入到base环境 二、新…

Python绘图-9饼图(下)

9.6饼图添加阴影 9.6.1图像呈现 9.6.2绘图代码 # 导入相关库 import numpy as np # 导入numpy库&#xff0c;用于处理数组和数值计算 import matplotlib.pyplot as plt # 导入matplotlib的绘图模块&#xff0c;用于可视化 import matplotlib.patheffects as path_effects …

实际中的Stream流的用法

实际中的Stream流的用法 不同对象怎么生成stream流对象 package stream;/*** @author 刘诗良* @version 1.0* @Description*/ import java.util.*; import java.util.stream.Stream;public class StreamDemo {public static void main(String[] args) {//Collection体系的集合…

springBoot-SpringBoot自定义starter

在一个空Maven项目中&#xff0c;新增xxxx-spring-boot-starter和xxxx-spring-boot-autoconfigure两个模块&#xff0c;xxxx是你这个starter是做什么的&#xff0c;模块xxxx-spring-boot-starter主要是作依赖管理&#xff0c;外界使用我们自定义的starter只需要导入我们xxxx-sp…

记 Hyperf booted模型事件的使用

前因 产品经理提了一个需求&#xff0c;要求能自定义内容的创建时间&#xff0c;当前事件大于创建时间时&#xff0c;才能查询到这些内容&#xff0c;并对内容进行操作 我的第一反应&#xff1a;不算麻烦&#xff0c;只需要在仓储层的查询方法中&#xff0c;给每个查询都多加…

Golang Copy()方法学习

前言 主要是涉及到深浅拷贝相关的&#xff0c;但是在看的一个资料过程中发现他有错…并且一系列&#xff0c;复制粘贴他的&#xff0c;也都错了。 错误文章指路 很显然&#xff0c;Copy是深拷贝啊&#xff01;&#xff01;&#xff01; Copy功能 copy的代码很少&#xff0c…

9.WEB渗透测试-Linux基础知识-Linux用户权限管理(上)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;8.WEB渗透测试-Linux基础知识-Linux基础操作&#xff08;二&#xff09;-CSDN博客 用户管…

如何在jupyter notebook 中下载第三方库

在anconda 中找到&#xff1a; Anaconda Prompt 进入页面后的样式&#xff1a; 在黑色框中输入&#xff1a; 下载第三方库的命令 第三方库&#xff1a; 三种输入方式 标准保证正确 pip instsall 包名 -i 镜像源地址 pip install pip 是 Python 包管理工具&#xff0c;…