【C++入门】C++ deque类

C++ deque类

在这里插入图片描述

一、deque简介

“deque” 是简写形式, 其原意为 “double-ended queue”。 deque 模板类提供了对序列随机访问的功能,可以实现在序列两端快速插入和删除操作 的功能, 在需要时修改自身大小。 deque 型容器是典型的双端队列, 可以完成标准C++ 数据 结构中队列的所有功能。

  • deque 是动态数组,在 STL 库的头文件 < deque >中
  • deque 型容器和 vector 型容器的对比:
    • 1) deque 可以在两端迅速插入和删除元素, 而 vector 只提供了成员函数 push_back( )和 pop_back()。
    • 2) 存取元素时, deque 型容器会稍慢一些。
    • 3) deque 型容器的迭代器是智能型指针。
    • 4) 在内存区块受限制的系统中, deque 型容器可以包含更多元素, 因为它使用了多块 内存。
    • 5) deque 型容器不支持对容器和内存重分配时机的控制。
    • 6) deque 的内存区块不使用时, 会被释放。
    • 7) 在序列中间插入和删除元素时, deque 的速度很慢, 需要移动相关的所有元素。
    • 8) deque 型容器的迭代器属于随机存取迭代器。

二、deque 的定义和构造函数

  • 无参,创建一个空双向队列

    deque();
    
  • size - 创建一个大小为size的双向队列

    deque( size_type size );
    
  • num and val - 放置num个val的拷贝到队列中

    deque( size_type num, const TYPE &val );
    
  • from - 从from创建一个内容一样的双向队列

    deque( const deque &from );
    
  • start 和 end - 创建一个队列,保存从start到end的元素

    deque( input_iterator start, input_iterator end );
    

三、deque元素的存取和访问

(1)元素存取

  • pop_front()删除双向队列头部的元素

    void pop_front();
    
  • pop_back()删除双向队列尾部的元素

    void pop_back();
    
  • push_front()函数在双向队列的头部加入一个值为val的元素

    void push_front( const TYPE &val );
    
  • push_back()函数在双向队列的尾部加入一个值为val的元素

    void push_back( const TYPE &val );
    

(2)元素访问

  • 顺序索引

    • 使用[]操作符访问双向队列中单个的元素
    • at()函数返回一个引用,指向双向队列中位置pos上的元素
      reference at( size_type pos );
      
  • 元素引用

    • front()函数返回一个引用,指向双向队列的头部

       reference front();
      
    • back()返回一个引用,指向双向队列中最后一个元素

      reference back();
      
  • 迭代器相关

    • begin()函数返回一个迭代器,指向双向队列的第一个元素

       iterator begin();
      
    • end()函数返回一个迭代器,指向双向队列的尾部

      iterator end();
      
    • rbegin()返回一个指向双向队列尾部的逆向迭代器

       reverse_iterator rbegin();
      
    • rend()返回一个指向双向队列头部的逆向迭代器

      reverse_iterator rend();
      

四、deque容器的容量

  • empty()返回真如果双向队列为空,否则返回假

     bool empty();
    
  • size()函数返回双向队列中的元素个数

     size_type size();
    
  • resize()改变双向队列的大小为num,另加入的元素都被填充为val

    void resize( size_type num, TYPE val );
    

五、deque基本操作

  • 队列赋值
    • assign()函数用start和end指示的范围为双向队列赋值
       void assign( input_iterator start, input_iterator end);
      
    • assign()函数设置成num个val
        void assign( Size num, const TYPE &val );
      
  • 清空队列
    • clear()函数删除双向队列中所有元素
       void clear();
      
  • 删除元素
    • erase()函数删除pos位置上的元素,返回值是一个iterator,指向被删除元素的后一个元素
      iterator erase( iterator pos );
      
    • erase()函数删除start和end之间的所有元素,返回值是一个iterator,指向被删除元素的后一个元素
      iterator erase( iterator start, iterator end );
      
  • 插入元素
    • insert()在pos前插入num个val值,该函数返回一个迭代器,该迭代器指向新插入的元素中的第一个
      iterator insert( iterator pos, size_type num, const TYPE &val );
      
    • insert()插入从start到end范围内的元素到pos前面
      void insert( iterator pos, input_iterator start, input_iterator end );
      
  • 交换队列
    • swap()函数交换target和现双向队列中元素
      void swap( deque &target );
      
  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

BkbK-

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

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

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

打赏作者

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

抵扣说明:

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

余额充值