总结deque容器的操作函数

deque 我们一般叫双向队列,因为这个可以在两头操作嘛

前言

在总结之前,我看了deque用法深度解析,一篇文章弄懂deque容器各种操作_在下马农的博客-CSDN博客

总结的真的蛮好感觉,不过我觉得哪个还是适合新学,不适合分享复习(内容太多,

找知识点函数找得太麻烦了),但是写博客只是为了理清楚自己的思路嘛,我也写一写

这俩一定要有吧

#include<deque>

deque<int>  v;

一.添加数据

        1.v.push_back(19);//尾巴插个19嘛

        2.v.push_front(20);//头插个20嘛

        3.v.insert(v.begin() + 1, 39);//在起始位置+1处插个39

        4.v.insert(v.begin() + 1, 2,39);//在起始位置+1处插2个39

        5.v.insert(v.begin() + 1, b , b + 2);//注意b为数组,将b从0~1(2不包含)的元素插到1位置后的

        6.v.assign(4, 2);//将4个2替换原有内容

        7.v.assign(m.begin(), m.end());//m为另一个容器,将起始迭代器(位置)与最后一个(自己想取的范围最后一个:注意不包括这个)告诉他会将v重置为那些数据

        发现没有 , 这个和vector容器相似度几乎高达80%啊!         我都不用打了,看看相同的直接复制过来就行

二.查看数据

(1)int a=v[0];//直接用[ ]加数字找 (前提v[ n ]存在,否则程序崩溃)

(2)int b=v.at(0);//at函数来查看(前提v.at(n)存在,否则程序崩溃)

8837d928e4034c6f99811c318105352d.png

                        ----->at()与[]有什么区别呢

  []和at()的区别在于[]不检查索引是否有效,而at()在遇到无效索引时会抛出out_of_range异常.

                就看要不要接异常了

(3)一些其他函数查看值

        v.back(); //返回v的最后一个元素

        v.front(); //返回v的第一个元素

三.空间分配

        1.v.resize(10); //将v的现有元素个数调至10个,多则删,少则补,其值随机

        2.v.resize(10,2); //将v的现有元素个数调至10个,多则删,少则补,其值为2

reverse不是deque的成员哦

四、对deque的一下其他类型操作

       

        1.v.size(); //返回v中元素的个数;

        2.//没有v.capacity()的哦;

        3.v.clear(); //清空v中的元素

        4.v.empty(); //判断v是否为空,空则返回ture,不空则返回false

        5.v.pop_back(); //删除v向量的最后一个元素

        6.v.pop_froat();//删除头部元素

        6.v.swap(b); //b为向量(就是deque开辟的),将v中的元素和b中的元素进行整体性交换

        7.v.begin();//返回起始迭代器位置

        8.v.end();//返回最后迭代器(没有数据!!!)

        9.使用reverse_iterator反向迭代器

                (1)v.rend();//返回起始迭代器位置

                (2)v.regain();/返回最后迭代器(没有数据!!!)

       10.v.erase(v.begin()+1,v.begin()+3); //删除a中第1个(从第0个算起)到第2个元素,删除数据
       11.emplace(v.begin(),int value)函数:iterator迭代器指向元素的前边添加一个元素

       12.emplace_back(int value);//在尾巴插一个嘛

       13.emplace_froat(int value);//在头插一个嘛

       14.shrink_to_fit()——要求deque减小容量已适应元素个数

       15. max_size()——最多能容纳元素个数//就是这个容器的最大能力

不想打了,从其他人哪里偷过来,应该不过分吧

deque中的迭代器包括以下几个,分别为:

deque.begin():指向deque首元素的迭代器
deque.end():指向deque尾元素下一个位置的迭代器
deque.rbegin():指向deque尾元素的反向迭代器,即rbegin()指向尾元素,rbegin-1指向倒                               数第二个元素
deque.rend():指向deque头元素前一个位置的反向迭代器,即rend()指向头元素前一个位置                          元素,rbegin-1指向第一个元素
deque.cbegin():指向deque首元素的迭代器,与begin()相同,只不过增加了const属性,不                            能用于修改元素。
deque.cend():指向deque尾元素下一个位置的迭代器,与end()相同,只不过增加了const                              属性,不能用于修改元素。
deque.crbegin():指向deque尾元素的反向迭代器,与rbegin()相同,只不过增加了const属                                  性,不能用于修改元素。
deque.crend():指向deque头元素前一个位置的反向迭代器,与rend()相同,只不过增加了                              const属性,不能用于修改元素。


 

遍历容器

for (deque<int>::iterator it = v.begin(); it != v.end(); ++it)
    {
        cout << *it << endl;
    }

for(deque<int>::reverse_iterator a=v.rbegin();a!=v.rend();++a)

//反向迭代器 reverse_iterator    rbegin()指向最后一个元素  rend()指向第一个元素的后一个位置

   {
    cout<<*a<<" ";//反向输出数据

   }

    return 0;
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值