STL常用容器——queue容器的使用

本文详细介绍了STL中queue容器的基本概念,包括其先进先出特性、构造方式(如空队列、基于deque和list的队列)以及常用成员函数(如判断队列是否为空、获取元素数量、出入队操作)。通过实例演示了如何在C++中实际操作queue。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

STL常用容器——queue容器的使用

1、queue容器的介绍

queue容器简介

queue是一种先进先出(FIFO)的数据结构,因此queue容器又称队列容器。

queue容器有 2 个开口,其中一个开口专门用来输入元素,另一个专门用来输出元素。

队列中只有队头和队尾才可以被外界使用,只能在队列容器的末尾添加新元素,只能从头部移除元素。

队列中进数据称为 — 入队 push。

队列中出数据称为 — 出队 pop。

queue容器特点

  • queue容器内的元素进出都必须符合 “先进先出” 的策略。

  • queue容器队列顶端(队头和队尾)的元素才会被取用,因此queue容器不提供遍历功能,也不提供迭代器。

  • 最先进入 queue 的元素,也可以最先从 queue 中出来

2、queue容器常用接口

2.1、queue容器构造函数

创建一个空的 queue 容器

语法:queue<T> q

//创建一个int类型的queue 容器,底层采用 deque 容器的 queue 容器适配器
queue<int> q1;

创建指定的queue 容器

指定queue 容器适配器底层采用的基础容器类型,可以选择 deque 和 list

语法:queue<T, list<T>> values

//创建了一个使用 list 容器作为基础容器的空queue容器
queue<int, list<int>> q2;

注意:基础容器存储的数据类型必须和 queue 容器存储的数据类型保持一致

用基础容器deque来创建 queue 容器

语法:queue<T> q{}

deque<int> values{ 1,2,3 };
queue<int> q3(values);

注意:deque容器元素类型需要和 deque的容器类型相同

拷贝构造

语法:queue<int> q4(const queue &que)

deque<int> values{ 1,2,3 };
queue<int> q3(values);
queue<int> q4(q3);

2.2、queue队列容器常用的成员函数

queue容器常用的的成员函数如下:

成员函数功能
empty()判断队列是否为空
size()返回队列中的元素个数。
front()返回队列中第一个元素。如果队列是常量,就返回一个常引用;如果队列为空,返回值是未定义的。
back()返回队列中最后一个元素。如果队列是常量,就返回一个常引用;如果队列为空,返回值是未定义的。
push(const T& obj)在队列的尾部添加一个元素的副本。这是通过调用底层容器的成员函数 push_back() 来完成的。
push(T&& obj)以移动的方式在队列的尾部添加元素。这是通过调用底层容器的具有右值引用参数的成员函数 push_back() 来完成的。
pop()移除队列中的第一个元素。

代码实例:

#include<iostream>
using namespace std;
#include<queue>
#include<list>

void test1(){
	
	//默认构造
	queue<int> q1;

	//list容器构造
	queue<int, list<int>> q2;

	//deque容器构造
	deque<int> values{ 1,2,3 };
	queue<int> q3(values);

	//拷贝构造
	queue<int> q4(q3);

	for (int i = 0; i < 10; i++)
	{
		q2.push(i);
	}
	cout << "q1.size: " << q1.size() << endl;
	cout << "q1首个元素: "<< q2.front() << endl;
	cout << "q1末尾元素: "<< q2.back() << endl;

	//遍历容器访问队列元素
	while (!q2.empty())
	{
		cout << q2.front() << endl;
		//出队
		q2.pop();
	}
}

int main()
{
	test1();
	system("pause");
	return 0;
}

在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

万里顾—程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值