C++基础——STL——queue

本文详细介绍了队列数据结构的定义、实现与操作,包括push、pop、front、back和empty等常用函数,并探讨了其在广度优先搜索等场景的应用。同时,对比了双端队列与优先队列的特点。

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

queue,队列,实现一个 先进先出 的容器

1. 定义

queue<typename> q;

2. 访问

    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;
}

3. 常用函数

(1)push()

         push(x),将 x 进行入队

(2)front()、back()

         获取队首元素和队尾元素

(3)pop()

         令队首元素出队

#include <stdio.h>
#include <queue>
using namespace std;
int main(){
	queue<int> q;
	for(int i = 1; i <= 5; i++){
		q.push(i); // 依次入队 1 2 3 4 5
	}
	for(int i = 1; i <= 3; i++){
		q.pop(); // 出队首元素3次,依次是1 2 3
	}
	printf("%d\n", q.front());
	return 0;
}

(4)empty()

         检测 queue 是否为空,返回 true 空,false 非空

#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;
}

(5)size()

         返回 queue 内元素的个数

#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;
}

4. 常见用途

需要实现广度优先搜索时,可以不用自己手动实现一个队列,而是用 queue 作为代替,以提高程序的准确性。

注意:在使用 front() 和 pop() 函数之前,必须用 empty() 判断队列是否为空

延申:双端队列(deque)首尾皆可插入和删除

           优先队列(priority_queue)使用堆实现的默认将当前队列最大元素置于队首的容器。

 

 

——摘抄自《算法笔记》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值