STL库--queue详解

目录

queue的定义

queue容器内元素的访问

queue常用函数实例解析

queue的常见用途

queue的定义

其定义的写法和其他STL容器相同,typename可以是任意基本数据类型或容器:

queue<typename> name;

queue容器内元素的访问

由于队列本身就是一种先进先出的限制性数据结果,因此在STL中只能通过front()来访问队首元素,或是通过back()来访问队尾元素。

#include<stdio.h>
#include<queue>
using namespace std;
int main(){
	queue<int> q;
	for(int i=1;i<=5;i++){
		q.push(i);
	}
	printf("%d %d\n",q.front(),q.back());
	return 0;
}

queue常用函数实例解析

(1)push()

push(x)将x进行入队,时间复杂度为O\left ( 1 \right )

(2)front()、back()

front()和back()可以分别获得队首元素和队尾元素,时间复杂度为O\left ( 1 \right )

(3)pop()

pop()令队首元素出队,时间复杂度为O\left ( 1 \right )

#include<stdio.h>
#include<queue>
using namespace std;
int main(){
	queue<int> q;
	for(int i=1;i<=5;i++){
		q.push(i);
	}
	for(int i=1;i<=3;i++){
		q.pop();
	}
	printf("%d\n",q.front());
	return 0;
}

输出结果

4

(4)empty()

empty()检测queue是否为空,返回true则空,返回false则非空。时间复杂度为O\left ( 1 \right )

#include<stdio.h>
#include<queue>
using namespace std;
int main(){
	queue<int> q;
	if(q.empty()==true){
		printf("Empty\n");
	}
	else{
		printf("Not Empty\n");
	}
	q.push(1);
	if(q.empty()==true){
		printf("Empty\n");
	}
	else{
		printf("Not Empty\n");
	}
	return 0;
}

输出结果

Empty
Not Empty

(5)size()

size()返回queue内元素的个数,时间复杂度为O\left ( 1 \right )

#include<stdio.h>
#include<queue>
using namespace std;
int main(){
	queue<int> q;
	for(int i=1;i<=5;i++){
		q.push(i);
	}
	printf("%d\n",q.size());
	return 0;
}

queue的常见用途

当需要实现广度优先搜索时,可以不用自己手动实现一个队列,而是用queue作为代替。

另外有一点注意的是,使用front()和pop()函数前,必须用empty()判断队列是否为空。否则可能因为队空而出现错误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

互联网的猫

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

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

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

打赏作者

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

抵扣说明:

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

余额充值