前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。
/ctx
博主简介:
Hello大家好呀,我是陈童学,一个与你一样正在慢慢前行的人。
博主主页:@陈童学哦
所属专栏:C++STL
如果本文对你有所帮助的话,希望可以点赞????收藏????支持一下哦!
期待你的关注,一起成长哟!
前言:
Hello各位小伙伴们好!欢迎来到本专栏C++STL的学习,本专栏旨在帮助大家了解并熟悉使用C++中的STL,C++中的STL(标准模板库)是相当好用的,????????????所以大家赶紧订阅一起学起来叭!那么话不多说接下来就进入本文C++中deque的学习。
????????????站点
- ⭐一、deque的简介
- ⭐二、deque的定义及初始化
- ⭐三、deque的成员函数
- ⭐四、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