C++中的STL——queue类的基本使用

目录

queue类介绍

queue类定义

queue类构造函数

queue类数据操作

empty()函数

size()函数

front()函数

back()函数

push()函数

pop()函数

swap()函数


queue类介绍

  1. 队列是一种容器适配器,专门用于在FIFO上下文(先进先出)中操作,其中从容器一端插入元素,另一端提取元素。
  2. 队列作为容器适配器实现,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特定的成员函数来访问其元素。元素从队尾入队列,从队头出队列。
  3. 底层容器可以是标准容器类模板之一,也可以是其他专门设计的容器类。
  4. 标准容器类deque和list满足了这些要求。默认情况下,如果没有为queue实例化指定容器类,则使用标准容器deque。

queue类定义

template <class T, class Container = deque<T> > class queue;

queue类为类模板,所以在使用时需要带上类型表示一个具体的类,例如数据类型为int类型的queue使用时需要写为queue<int>

queue类构造函数

构造函数

函数原型

无参构造函数

explicit queue (const container_type& ctnr = container_type());

📌

上面表格中的构造函数均含有自定义空间配置器并带有缺省值,目前只使用默认即可

📌

使用queue类需要包含头文件<queue>

示例代码:

#include <iostream>
#include <queue>
using namespace std;int main()
{queue<int> q;q.push(1);q.push(2);q.push(3);q.push(4);q.push(5);//打印队列while (!q.empty()){cout << q.front() << " ";q.pop();}cout << endl;return 0;
}
输出结果:
1 2 3 4 5

queue类数据操作

函数

功能

empty()

判断调用对象队列是否为空

size()

获取调用对象队列有效数据个数

front()

获取调用对象队列对头数据

back()

获取调用对象队列队尾数据

push()

向调用对象队列尾部插入数据

pop()

弹出调用对象队列对头元素

swap()

调用对象队列与指定对象队列交换

empty()函数

使用empty()函数可以判断调用对象队列是否为空

函数

函数原型

empty()

bool empty() const;

示例代码:

#include <iostream>
#include <queue>
using namespace std;int main()
{queue<int> q;q.push(1);q.push(2);q.push(3);q.push(4);q.push(5);cout << q.empty() << endl;return 0;
}
输出结果:
0

size()函数

使用size()函数可以获取调用对象队列有效数据个数

函数

函数原型

size()

size_type size() const;

示例代码:

#include <iostream>
#include <queue>
using namespace std;int main()
{queue<int> q;q.push(1);q.push(2);q.push(3);q.push(4);q.push(5);cout << q.size() << endl;return 0;
}
输出结果:
5

front()函数

使用front()函数可以获取调用对象队列对头元素

函数

函数原型

front()

value_type& front();

const value_type& front() const;

📌

如果队列为空,此时调用front()函数将会断言报错

示例代码:

#include <iostream>
#include <queue>
using namespace std;int main()
{queue<int> q;q.push(1);q.push(2);q.push(3);q.push(4);q.push(5);cout << q.front() << endl;return 0;
}
输出结果:
1

back()函数

使用back()函数可以获取调用对象队列队尾数据

函数

函数原型

back()

value_type& back();

const value_type& back() const;

📌

如果调用对象队列为空,调用back()函数将会断言报错

示例代码:

#include <iostream>
#include <queue>
using namespace std;int main()
{queue<int> q;q.push(1);q.push(2);q.push(3);q.push(4);q.push(5);cout << q.back() << endl;return 0;
}
输出结果:
5

push()函数

使用push()函数可以向调用对象队列中插入数据

函数

函数原型

push()

void push (const value_type& val);

示例代码:

#include <iostream>
#include <queue>
using namespace std;int main()
{queue<int> q;q.push(1);q.push(2);q.push(3);q.push(4);q.push(5);//打印队列while (!q.empty()){cout << q.front() << " ";q.pop();}cout << endl;return 0;
}
输出结果:
1 2 3 4 5

pop()函数

使用pop()函数可以弹出调用对象队列对头数据

函数

函数原型

pop()

void pop();

示例代码:

#include <iostream>
#include <queue>
using namespace std;int main()
{queue<int> q;q.push(1);q.push(2);q.push(3);q.push(4);q.push(5);//打印队列while (!q.empty()){cout << q.front() << " ";q.pop();}cout << endl;return 0;
}
输出结果:
1 2 3 4 5

swap()函数

使用swap()函数可以交换调用对象队列和指定对象队列

函数

函数原型

swap()

void swap (queue& x);

示例代码:

#include <iostream>
#include <queue>
using namespace std;int main()
{queue<int> q;queue<int> q1;q.push(1);q.push(1);q.push(1);q.push(1);q.push(1);q1.push(2);q1.push(2);q1.push(2);q1.push(2);q1.push(2);cout << "交换前:" << endl;//打印栈while (!q.empty()){cout << q.front() << " ";q.pop();}cout << endl;//打印栈while (!q1.empty()){cout << q1.front() << " ";q1.pop();}cout << endl;// 注意打印已经使栈为空,需要重新插入元素q.push(1);q.push(1);q.push(1);q.push(1);q.push(1);q1.push(2);q1.push(2);q1.push(2);q1.push(2);q1.push(2);q.swap(q1);cout << "交换后:" << endl;//打印栈while (!q.empty()){cout << q.front() << " ";q.pop();}cout << endl;//打印栈while (!q1.empty()){cout << q1.front() << " ";q1.pop();}cout << endl;return 0;
}
输出结果:
交换前:
1 1 1 1 1
2 2 2 2 2
交换后:
2 2 2 2 2
1 1 1 1 1

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

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

相关文章

wow-string-list文件说明

wow-string-list文件说明 项目地址&#xff1a;https://gitee.com/wow-iot/wow-iot7本文件主要功能用于字符串链表相关操作&#xff0c;主要涉及创建、销毁、插入、获取、分隔、格式转换&#xff1b; 初始化与退出: StringList_T* wow_stringlist_new(void) {return (String…

SQL 的三值逻辑 (TRUE/FALSE/UNKNOW。)

前言 工作中要删除 运营表示username"张三"的数据有5条&#xff0c;某张表中username<>"张三"的数据&#xff0c;username的默认值为null,但是笔者在进行查询时username"张三"比username<>张三少了100多条数据&#xff0c;故发现sql…

element-ui的el-tree使用-懒加载状态下el-tree的叶子节点才显示多选框,父节点则隐藏多选框

项目要求&#xff1a; 多选树得叶子节点数据 1、el-tree 树为懒加载 后端数据返回得树节点数据为&#xff1a; {nodeId&#xff1a;‘’&#xff0c;nodeName&#xff1a; ‘’&#xff0c;isLeaf: 0,nodeType: O / E’ //项目返回的叶子节点的判断 E为叶子节点 }isLeaf为判…

[Collection与数据结构] PriorityQueue与堆

1. 优先级队列 1.1 概念 前面介绍过队列&#xff0c;队列是一种先进先出(FIFO)的数据结构&#xff0c;但有些情况下&#xff0c;操作的数据可能带有优先级&#xff0c;一般出队列时&#xff0c;可能需要优先级高的元素先出队列&#xff0c;该中场景下&#xff0c;使用队列显然…

自动化机器学习流水线:基于Spring Boot与AI机器学习技术的融合探索

&#x1f9d1; 作者简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

Python常用包介绍

数据处理 1.numpy&#xff08;数据处理和科学计算&#xff09; import numpy as np np.set_printoptions(precision2, suppressTrue) # 设置打印选项&#xff0c;保留两位小数&#xff0c;禁止科学计数法arr np.arange(1, 6) # 使用arange函数创建数组 print(arr)# 输出&…

深度学习下的视觉SLAM综述

作者&#xff1a;黄泽霞&#xff0c;邵春莉 来源&#xff1a;《机器人》 编辑&#xff1a;东岸因为一点人工一点智能 深度学习下的视觉SLAM综述到目前为止&#xff0c;深度学习与SLAM的结合已经在视觉里程计、场景识别与全局优化等各种任务中取得了显著的成果。同时&#xf…

Prompt Engineering,提示工程

什么是提示工程&#xff1f; 提示工程也叫【指令工程】。 Prompt发送给大模型的指令。比如[讲个笑话]、[用Python编个贪吃蛇游戏]、[给男/女朋友写情书]等看起来简单&#xff0c;但上手简单精通难 [Propmpt]是AGI时代的[编程语言][Propmpt]是AGI时代的[软件工程][提示工程]是…

线上申报开放时间!2024年阜阳市大数据企业培育认定申报条件、流程和材料

2024年阜阳市大数据企业培育认定申报条件、流程和材料&#xff0c;线上申报开放时间整理如下 一、2024年阜阳市大数据企业培育认定申报要求 &#xff08;一&#xff09;经营范围 申请认定的企业应当从事以下生产经营活动&#xff1a; 1.从事数据收集、存储、使用、加工、传输、…

使用linux,c++,创作一个简单的五子棋游戏

#include <iostream> #include <vector> #include <unordered_map> using namespace std; // 棋盘大小 const int BOARD_SIZE 15; // 棋子类型 enum ChessType { EMPTY, BLACK, WHITE }; // 棋盘类 class ChessBoard { private: vect…

CHiME-8多通道远场语音识别Baseline介绍

语音领域每年都有很多比赛&#xff0c;每个比赛都有自己的侧重点&#xff0c;其中CHiME系列比赛的侧重点就是多通道远场语音识别&#xff0c;与其他的语音识别比赛有所区别的是&#xff0c;CHiME提供分布式麦克风和麦克风阵列数据&#xff0c;这样可以选择合适的前端算法以降低…

创建Spring Boot项目

选择Maven Archetype,之后再Archetype选择webapp 两个都打勾 这是当前的打勾 这个是以后都默认勾上 打开对应的路径&#xff0c;用vscode打开settings.xml 加入国内源 阿里云 若没有此文件可上网查找 若jar包出现问题&#xff0c;可在repostitory文件内全删除 之后在Maven刷…

设计模式之责任链模式(二): 实现方式

C设计模式专栏&#xff1a;http://t.csdnimg.cn/8Ulj3 相关文章系列 设计模式之责任链模式(一)-CSDN博客 目录 1.引言 2.实现方式1 3.实现方式2 4.总结 1.引言 责任链设计模式(Chain of Responsibiliy DesignPattern)简称职责链模式。在GOF的《设计模式:可复用面向…

第12章 最佳的UI体验——Material Design实战

第12章 最佳的UI体验——Material Design实战 其实长久以来&#xff0c;大多数人都认为Android系统的UI并不算美观&#xff0c;至少没有iOS系统的美观。以至于很多IT公司在进行应用界面设计的时候&#xff0c;为了保证双平台的统一性&#xff0c;强制要求Android端的界面风格必…

HarmonyOS开发案例:【 自定义弹窗】

介绍 基于ArkTS的声明式开发范式实现了三种不同的弹窗&#xff0c;第一种直接使用公共组件&#xff0c;后两种使用CustomDialogController实现自定义弹窗&#xff0c;效果如图所示&#xff1a; 相关概念 [AlertDialog]&#xff1a;警告弹窗&#xff0c;可设置文本内容和响应回…

了解HTTP代理服务器:优势、分类及应用实践

在我们日常的网络使用中&#xff0c;我们经常听到HTTP代理服务器这个术语。那么&#xff0c;HTTP代理服务器到底是什么&#xff1f;它有什么优势和分类&#xff1f;又如何应用于实践中呢&#xff1f;让我们一起来了解一下。 HTTP代理服务器是一种位于客户端和服务器之间的中间…

图像处理基础知识

图像处理基础知识 图像 1、模拟图像 模拟图像&#xff0c;又称连续图像&#xff0c;是指在二维坐标系中连续变化的图像&#xff0c;即图像的像点是无限稠密的&#xff0c;同时具有灰度值&#xff08;即图像从暗到亮的变化值&#xff09;。 2、数字图像 数字图像&#xff0…

Android13锁屏或灭屏状态下,快速按两次音量下键实现打开闪光灯功能

实现思路&#xff1a; 1、发送广播 WindowManagerService循环读取下面按键消息并分发给窗口&#xff0c;在消息分发前会在PhoneWindowManager.interceptKeyBeforeQueueing方法中进行消息的过滤。因此该实现方式为在消息分发前的interceptKeyBeforeQueueing方法中监听当前按键为…

Python基础知识—运算符和if语句(二)

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》 《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 1.输入和输出函数1.1输出函数1.2输入函数 2.常见运算符2.1赋值运算符2.2比较运算符2.3逻辑运算符2.4and逻辑与2.5or逻辑或2.6not逻…

ceph介绍

一、前言 Ceph 是一个完全分布式的系统&#xff0c;它将数据分布在整个集群中的多个节点上&#xff0c;以实现高可用性和容错性&#xff0c;ceph支持对象存储、块存储、文件存储所以被称为统一存储&#xff0c;ceph的架构由以下组件组成:mon、mgr、osd、mds、cephfs、rgw&#…