C++ STL标准模板库——deque

C++ STL标准模板库——deque

deque基本概念

deque是双端数组,可以对头端和尾端进行插入和删除操作
在这里插入图片描述

deque和vector的区别:

  • vector对于头端的插入删除效率低,数据量越大效率越低
  • deque相对而言,对头部的插入删除速度比vector快
  • vector访问元素时的速度会比deque快

deque的内部原理:

  deque内部有个中控器,维护每段缓冲区中的内容,缓冲区中存放真实数据;中控器维护的是每个缓冲区的地址,使得使用deque时像一片连续的内存空间;
在这里插入图片描述

deque容器的迭代器也是支持随机访问的

在使用前要添加 #include<deque>头文件

deque构造函数

  • deque deq;          //默认构造形式
  • deque(beg,end);        //将[beg,end]区间的元素拷贝到本身
  • deque(n,elem);        //将n个elem元素拷贝到本身
  • deque(const deque &deq);      //将对象deq拷贝到本身

deque赋值操作

有两种方法:操作符 = 和 .assign( )

  1. assign(beg,end);      //将[beg,end]区间的元素拷贝到本身
  2. assign(n,elem);      //将n个elem元素拷贝到本身

deque大小操作

  • deque.empty();      //判断是否为空
  • deque.size();      //返回容器中元素的个数
  • deque.resize(int num);      //将容器的容量从新设置为num,若容量变大,则以默认值填充新位置;若容量变小,则超出容器容量的元素被删除
  • deque.resize(int num,elem);      //将容器的容量从新设置为num,若容量变大,则以元素elem填充新位置;若容量变小,则超出容器容量的元素被删除

deque插入和删除

两端插入操作:

  • deque.push_back(elem);      //在容器尾部添加元素elem
  • deque.push_front(elem);      //在容器头部添加元素elem
  • deque.pop_back();      //删除容器尾部元素
  • deque.pop_front();      //删除容器头部元素

指定位置操作:

  • deque.insert(pos,elem);      //在迭代器pos位置插入元素elem
  • deque.insert(pos,n,elem);      //在迭代器pos位置插入n个元素elem
  • deque.insert(pos,beg,end);      //在迭代器pos位置插入区间[deque.begin(),deque.end()]内的元素
  • deque.clear();            //清空容器内所有数据
  • deque.erase(beg,end);      //清除区间[deque.begin(),deque.end()]内的元素
  • deque.erase(pos);      //清除迭代器pos位置的元素

deque数据存取

  • deque.at(int idx);      //返回索引idx所指的数据
  • deque[int idx];      //返回索引idx所指的数据
  • deque.front();      //返回容器第一个数据元素
  • deque.back();      //返回容器最后一个数据元素

deque排序

在使用前要添加 #include<algorithm>头文件

  • sort(dque.begin(),deque.end());      //对begin和end区间元素进行排序

对于支持随机访问的迭代器都可以利用sort算法进行排序

以上具体代码如何实现,看上一节vector,二者相似

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值