C++ STL queue

本文深入解析C++标准库中的queue数据结构,重点介绍其作为FIFO队列的工作原理,以及如何在实际编程中进行初始化、操作与遍历。通过示例代码展示queue的使用方法,包括数据的push和pop、队列的大小和清空等关键操作。

(一)了解queue
queue就是一个FIFO的队列
其底层容器默认是deque
没有迭代器!
只能访问头和尾,不能随机访问。
queue是适配器,不叫容器,因为是对容器的再封装。

(二)Test_Demo

#include <iostream>
#include <queue>//FIFO
#include <algorithm>

using namespace std;

int main()
{
	size_t i;
	/**********************************Demo1 initial**************************************/
	queue<int> q1;  //默认底层容器类型为deque<T>
	//queue<int> q2 = {1, 2};  不能在定义时初始化
	queue<int> q2(q1);  //可以使用拷贝构造函数来初始化,但是要保证二者存储的数据类型相同&&底层容器类型的相同

	/**********************************Demo2 options**************************************/
	if (q1.empty())//判断该队列是否为空
		cout << "the queue is empty!" << endl;

	for (i = 0; i < 5; ++i){
		q1.push(i);//push数据到队列尾部
	}

	cout << "the queue size is:" << q1.size() << endl;
	cout << "the queue front is:" << q1.front() << endl;
	cout << "the queue back is:" << q1.back() << endl;
	
	//遍历:queue没有迭代器,只能访问头元素和尾元素
	int x;
	int size = q1.size();
	cout << "遍历:" << endl;
	for (i = 0; i < size; ++i) {
		x = q1.front();
		cout << "data:" << x << " ";
		q1.pop();  //注意:pop后size也会变化
	}
	cout << endl;

	//清空&&删除queue:删除就是pop,没有clear,不过可以利用拷贝构造函数将一个空的queue交换
	queue<int> empty;
	swap(q1, empty);//or q1 = queue<int>();  虽然遍历pop也可以,但是。。。是吧!
	if (q1.empty())
		cout << "the queue have been clear!" << endl;

	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值