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

左手的ㄟ右手 2024-04-17 10:10 162阅读 0赞

博主简介: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时需要包含头文件:

  1. #include<deque>

⭐二、deque的定义及初始化

  • 定义
    deque<数据类型>容器名
    例:

    //deque的定义
    dequed1; //定义一个储存数据类型为int的双端队列d1
    dequed2; //定义一个储存数据类型为double的双端队列d2
    dequed3; //定义一个储存数据类型为string的双端队列d3
    deque<结构体类型>d4; //定义一个储存数据类型为结构体类型的双端队列d4
    deque d5[N]; //定义一个储存数据类型为int的双端队列数组d5
    dequed6[N]; //定义一个储存数据类型为double的双端队列数组d6

⭐三、deque的成员函数

关于deque的常用函数:

  1. push_back()//在队列的尾部插入元素。
  2. emplace_front()//与push_front()的作用一样
  3. push_front()//在队列的头部插入元素。
  4. emplace_back()//与push_back()的作用一样
  5. pop_back()//删除队列尾部的元素。
  6. pop_front()//删除队列头部的元素。
  7. back()//返回队列尾部元素的引用。
  8. front()//返回队列头部元素的引用。
  9. clear()//清空队列中的所有元素。
  10. empty()//判断队列是否为空。
  11. size()//返回队列中元素的个数。
  12. begin()//返回头位置的迭代器
  13. end()//返回尾+1位置的迭代器
  14. rbegin()//返回逆头位置的迭代器
  15. rend()//返回逆尾-1位置的迭代器
  16. insert()//在指定位置插入元素
  17. erase()//在指定位置删除元素

示例代码:

  1. #include<iostream>
  2. #include<deque>
  3. using namespace std;
  4. int main()
  5. {
  6. deque<int> d; //定义一个数据类型为int的deque
  7. d.push_back(1); //向队列中加入元素1
  8. d.push_back(2); //向队列中加入元素2
  9. d.push_back(3); //向队列中加入元素3
  10. d.push_back(4); //向队列中加入元素4
  11. cout<<"双端队列中现在的元素为:"<<endl;
  12. for(int i=0;i<d.size();i++)
  13. {
  14. cout<<d[i]<<" ";
  15. }
  16. cout<<endl;
  17. d.pop_front();
  18. cout<<"弹出队首元素后,双端队列中现在的元素为:"<<endl;
  19. for(int i=0;i<d.size();i++)
  20. {
  21. cout<<d[i]<<" ";
  22. }
  23. cout<<endl;
  24. d.pop_back();
  25. cout<<"弹出队尾元素后,双端队列中现在的元素为:"<<endl;
  26. for(int i=0;i<d.size();i++)
  27. {
  28. cout<<d[i]<<" ";
  29. }
  30. cout<<endl;
  31. d.push_back(6);
  32. cout<<"在队尾添加元素6后,双端队列中现在的元素为:"<<endl;
  33. for(int i=0;i<d.size();i++)
  34. {
  35. cout<<d[i]<<" ";
  36. }
  37. cout<<endl;
  38. d.push_front(8);
  39. cout<<"在队首添加元素8后,双端队列中现在的元素为:"<<endl;
  40. for(int i=0;i<d.size();i++)
  41. {
  42. cout<<d[i]<<" ";
  43. }
  44. }

运行结果:

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

⭐四、deque的遍历方法

  • 1.通过迭代器iterator遍历

    include

    include

    using namespace std;
    int main()
    {

    1. deque<int> d; //定义一个数据类型为int的deque
    2. d.push_back(1); //向队列中加入元素1
    3. d.push_back(2); //向队列中加入元素2
    4. d.push_back(3); //向队列中加入元素3
    5. d.push_back(4); //向队列中加入元素4
    6. deque<int>::iterator it;
    7. for(it=d.begin();it!=d.end();it++)
    8. {
    9. cout<<*it<<" ";
    10. }

    }

运行结果:

  1. 1 2 3 4
  • 2.通过下标遍历

    include

    include

    using namespace std;
    int main()
    {

    1. deque<int> d; //定义一个数据类型为int的deque
    2. d.push_back(1); //向队列中加入元素1
    3. d.push_back(2); //向队列中加入元素2
    4. d.push_back(3); //向队列中加入元素3
    5. d.push_back(4); //向队列中加入元素4
    6. for(int i=0;i<d.size();i++)
    7. {
    8. cout<<d[i]<<" ";
    9. }

    }

运行结果:

  1. 1 2 3 4
  • 3.通过foreach遍历

    include

    include

    using namespace std;
    int main()
    {

    1. deque<int> d; //定义一个数据类型为int的deque
    2. d.push_back(1); //向队列中加入元素1
    3. d.push_back(2); //向队列中加入元素2
    4. d.push_back(3); //向队列中加入元素3
    5. d.push_back(4); //向队列中加入元素4
    6. for(int it:d)
    7. {
    8. cout<<it<<" ";
    9. }

    }

运行结果:

  1. 1 2 3 4

⭐五、写在最后

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

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

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

发表评论

表情:
评论列表 (有 0 条评论,162人围观)

还没有评论,来说两句吧...

相关阅读