STL标准模版库----queue/deque操作大全

本文详细介绍了C++中单端队列(queue)和双端队列(deque)的基本操作,包括入队、出队、访问队首和队尾元素、判断队列空及获取元素个数等。通过实例展示了如何在程序中使用这些操作,并解释了双端队列允许在两端进行插入和删除的优势。
摘要由CSDN通过智能技术生成

1单端队列

先进先输

#include<iostream>
#include<queue>
using namespace std;
#if 0
声明,queue<变量类型> 变量名。
入队,q.push(x); 将x接到队列的末端。
出队,q.pop(); 弹出队列的第一个元素,不会返回被弹出元素的值。
访问队首元素,q.front(),即最早被压入队列的元素。
访问队尾元素,q.back(),即最后被压入队列的元素。
判断队列空,q.empty(),当队列空时,返回true。
获得元素个数,q.size()#endif
#include <iostream>
#include <queue>
using namespace std;
int main()
{
	//声明
	queue<int> q;
	//元素入队
	q.push(1);
	q.push(2);
	q.push(3);
	q.push(4);
	//获得队列大小
	cout << q.size() << endl;
	//队列是否为空
	cout << q.empty() << endl;
	//访问队首
	cout << q.front() << endl;
	//访问队尾
	cout << q.back() << endl;
	//弹出当前队首元素
	q.pop();
	return 0;
}

2 双端队列

双端队列(deque)
双端队列(deque)是队列的一种变形,一般队列只能在队尾添加元素(push),在队首删除元素(pop),双端队列则同时在队首或者队尾执行添加和删除工作。C++中,使用双端队列需要包含头文件。C++中队列的基本操作如下:

push_back():在队列尾部添加元素,无返回值。这个操作跟普通队列(queue)的push()方法类似,在队列的尾部添加一个元素;
push_front():在队列头部添加元素,无返回值;
pop_back():删除队列尾部的元素,无返回值;
pop_front():删除队列头部的元素,无返回值;
front() :获得队列头部元素。此函数返回值为队列的头部元素,常与pop_front()函数一起,先通过front()获得队列头部元素,然后用pop_front()将其从队列中删除;
back(): 获得队列尾部元素。此函数返回值为队列的尾部元素,常与pop_back()函数一起,先通过back()获得队列头部元素,然后用pop_back()将其从队列中删除;
size():获得队列大小。此函数返回队列的大小,返回值是“size_t”类型的数据,“size_t”是“unsigned int”的别名;
empty() :判断队列是否为空。此函数返回队列是否为空,返回值是bool类型。队列空:返回true;不空:返回false。


#include <iostream>
#include <deque>
#include <string>
using namespace std;
 
int main(void) {
	deque<string> q;
	q.push_back("world");		//将"world"入队尾
	cout << "将'world'入队尾后q.back(): " << q.back() << endl;	//输出队列尾部元素,就是"world"(此时队列中只有一个元素,队列头=队列尾)
	q.push_front("Hello ");		//将"Hello "入队首
	cout << "将'Hello '入队首后q.front(): " << q.front() << endl;	//输出队列头部元素,就是"Hello "
	cout << "此时队列的尾部元素: " << q.back() << endl;	//输出队列中尾部元素,就是"world"
	q.push_back("!");			//将"!"入队尾
	q.pop_front();			//将队列头部的元素删除(删除"Hello "),无返回值
	cout << "删除队列头部元素后,新队列的头部元素: " << q.front() << endl;	//此时队列头部元素为"world"
	cout << "队列是否为空(0:非空;1:空): " << q.empty() << endl;	//empty()返回bool值,表示队列是否为空,此时不为空,返回0
	q.pop_back();			//将队列尾部的元素删除(删除"!",此时队列中只有一个"world"),无返回值
	cout << "又删除了队尾元素‘!',现在队列是否为空(0:非空;1:空): " << q.empty() << endl;	//empty()返回bool值,表示队列是否为空,此时队列不为空,返回0
	cout << "此时队列的大小: " << q.size() << endl;	//返回队列的大小,此时队列大小为1,输出1
 
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值