C++中deque的用法(超详细,入门必看)

8 篇文章 59 订阅

博主简介:Hello大家好呀,我是陈童学,一个与你一样正在慢慢前行的人。
博主主页:@陈童学哦
所属专栏:C++STL
如果本文对你有所帮助的话,希望可以点赞👍收藏📂支持一下哦!
期待你的关注,一起成长哟!

在这里插入图片描述

前言:Hello各位小伙伴们好!欢迎来到本专栏C++STL的学习,本专栏旨在帮助大家了解并熟悉使用C++中的STL,C++中的STL(标准模板库)是相当好用的,🍉🍉🍉所以大家赶紧订阅一起学起来叭!那么话不多说接下来就进入本文C++中deque的学习。

⭐一、deque的简介

deque是一个双向队列(double-ended queue),可以在队列的两端进行元素的插入和删除操作。deque的全称是double-ended queue,翻译过来就是双端队列,也有人称之为双向队列,这两个名称都可以表示该数据结构。deque是C++STL(标准模板库)中的一种容器,可以用于存储各种类型的元素。deque的特点是可以在队列的两端进行元素的操作,并且可以高效地在队列的任意位置进行元素的插入和删除操作。
可以说deque几乎涵盖了queue(队列)、stack(堆栈)、vector(向量 )等的全部用法,功能非常的强大。

使用queue时需要包含头文件:

#include<deque>

⭐二、deque的定义及初始化

  • 定义
    deque<数据类型>容器名
    例:
//deque的定义 
deque<int>d1; //定义一个储存数据类型为int的双端队列d1 
deque<double>d2; //定义一个储存数据类型为double的双端队列d2 
deque<string>d3; //定义一个储存数据类型为string的双端队列d3 
deque<结构体类型>d4; //定义一个储存数据类型为结构体类型的双端队列d4 
deque<int> d5[N]; //定义一个储存数据类型为int的双端队列数组d5 
deque<double>d6[N]; //定义一个储存数据类型为double的双端队列数组d6 

⭐三、deque的成员函数

关于deque的常用函数:

push_back()//在队列的尾部插入元素。
emplace_front()//与push_front()的作用一样 
push_front()//在队列的头部插入元素。
emplace_back()//与push_back()的作用一样 
pop_back()//删除队列尾部的元素。
pop_front()//删除队列头部的元素。
back()//返回队列尾部元素的引用。
front()//返回队列头部元素的引用。
clear()//清空队列中的所有元素。
empty()//判断队列是否为空。
size()//返回队列中元素的个数。
begin()//返回头位置的迭代器
end()//返回尾+1位置的迭代器
rbegin()//返回逆头位置的迭代器 
rend()//返回逆尾-1位置的迭代器 
insert()//在指定位置插入元素 
erase()//在指定位置删除元素 

示例代码:

#include<iostream>
#include<deque>
using namespace std;
int main()
{
	deque<int> d; //定义一个数据类型为int的deque
	d.push_back(1); //向队列中加入元素1 
	d.push_back(2); //向队列中加入元素2
	d.push_back(3); //向队列中加入元素3
	d.push_back(4); //向队列中加入元素4
	cout<<"双端队列中现在的元素为:"<<endl;
	for(int i=0;i<d.size();i++)
	{
		cout<<d[i]<<" ";
	}
	cout<<endl;
	d.pop_front();
	cout<<"弹出队首元素后,双端队列中现在的元素为:"<<endl;
	for(int i=0;i<d.size();i++)
	{
		cout<<d[i]<<" ";
	}
	cout<<endl;
	d.pop_back();
	cout<<"弹出队尾元素后,双端队列中现在的元素为:"<<endl;
	for(int i=0;i<d.size();i++)
	{
		cout<<d[i]<<" ";
	}
	cout<<endl;
	d.push_back(6);
	cout<<"在队尾添加元素6后,双端队列中现在的元素为:"<<endl;
	for(int i=0;i<d.size();i++)
	{
		cout<<d[i]<<" ";
	}
	cout<<endl;
	d.push_front(8);
	cout<<"在队首添加元素8后,双端队列中现在的元素为:"<<endl;
	for(int i=0;i<d.size();i++)
	{
		cout<<d[i]<<" ";
	}
}

运行结果:

双端队列中现在的元素为:
1 2 3 4
弹出队首元素后,双端队列中现在的元素为:
2 3 4
弹出队尾元素后,双端队列中现在的元素为:
2 3
在队尾添加元素6后,双端队列中现在的元素为:
2 3 6
在队首添加元素8后,双端队列中现在的元素为:
8 2 3 6

⭐四、deque的遍历方法

  • 1.通过迭代器iterator遍历
#include<iostream>
#include<deque>
using namespace std;
int main()
{
	deque<int> d; //定义一个数据类型为int的deque
	d.push_back(1); //向队列中加入元素1 
	d.push_back(2); //向队列中加入元素2
	d.push_back(3); //向队列中加入元素3
	d.push_back(4); //向队列中加入元素4
	deque<int>::iterator it;
	for(it=d.begin();it!=d.end();it++)
	{
		cout<<*it<<" ";
	}
}

运行结果:

1 2 3 4
  • 2.通过下标遍历
#include<iostream>
#include<deque>
using namespace std;
int main()
{
	deque<int> d; //定义一个数据类型为int的deque
	d.push_back(1); //向队列中加入元素1 
	d.push_back(2); //向队列中加入元素2
	d.push_back(3); //向队列中加入元素3
	d.push_back(4); //向队列中加入元素4
	for(int i=0;i<d.size();i++)
	{
		cout<<d[i]<<" ";
	}
}

运行结果:

1 2 3 4
  • 3.通过foreach遍历
#include<iostream>
#include<deque>
using namespace std;
int main()
{
	deque<int> d; //定义一个数据类型为int的deque
	d.push_back(1); //向队列中加入元素1 
	d.push_back(2); //向队列中加入元素2
	d.push_back(3); //向队列中加入元素3
	d.push_back(4); //向队列中加入元素4
	for(int it:d)
	{
		cout<<it<<" ";
	}
}

运行结果:

1 2 3 4

⭐五、写在最后

OK本文的学习就到此结束啦,希望本文可以帮助到各位有需要的小伙伴们喔,也希望各位小伙伴们可以不要吝惜手里的三连哦!感谢你们的支持,你们的支持就是我创作最大的动力哦!❤️❤️❤️

💕 回头看,轻舟已过万重山,向前看,前路漫漫亦漫漫。

🍁🍁🍁那么我们下期再见!拜拜ヾ(•ω•`)o
在这里插入图片描述

  • 83
    点赞
  • 153
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 92
    评论
deque容器是C++标准库的一种双向队列(double-ended queue)容器。它允许在两端进行插入和删除操作,因此可以高效地在头部和尾部进行元素操作。deque的全称是"double-ended queue",意为双端队列。 与vector容器相比,deque容器更适合在两端频繁地插入和删除元素。它的内部实现采用了分块连续内存的结构,每个内部块都可以容纳一定数量的元素。这种分块结构使得deque在两端插入和删除元素的时间复杂度为常数,而在间插入和删除元素的时间复杂度为线性。 deque容器提供了类似于vector的接口,可以使用push_back()和pop_back()在尾部插入和删除元素,也可以使用push_front()和pop_front()在头部插入和删除元素。此外,还可以使用[]运算符和at()函数访问指定位置的元素。deque还提供了一系列其他操作,例如插入、删除、修改指定范围内的元素等。 要使用deque容器,需要包含<deque>头文件,并使用std命名空间。下面是一个使用deque容器的简单示例: ```cpp #include <deque> #include <iostream> int main() { std::deque<int> deque; deque.push_back(1); deque.push_back(2); deque.push_front(0); for (int i : deque) { std::cout << i << " "; } std::cout << std::endl; return 0; } ``` 以上示例,首先包含了<deque>头文件,并创建了一个名为dequedeque容器。然后使用push_back()和push_front()分别在尾部和头部插入元素。最后使用for循环遍历deque容器的元素,并输出结果为"0 1 2"。 希望对你有所帮助!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 92
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

陈童学哦

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

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

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

打赏作者

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

抵扣说明:

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

余额充值