deque容器

本文详细介绍了C++标准库中的两种动态数组容器——deque和vector,重点对比了它们在头部插入删除操作上的性能差异。deque由于其内部的缓冲区设计,在头部操作上比vector更快。同时,文章提供了deque的构造函数示例及常用操作,如插入、删除、大小调整等,并展示了相关代码执行结果。通过这些内容,读者能更好地理解deque和vector的适用场景。
摘要由CSDN通过智能技术生成

功能
双端数组,可以对头端进行插入删除操作
deque与vector区别
1.vector对于头部的插入删除效率低,数据量越大,效率越低
2.deque相对而言,对头部的插入删除速度会比vector快
3.vector访问元素时的速度会比deque快,这与两者内部实现有关在这里插入图片描述
deque内部工作原理:
deque内部有个中控器,维护每段缓冲区中的内容,缓冲区中存放真实数据
中控器维护的是每个缓冲区的地址,使得使用deque时像一片连续的内存空间
在这里插入图片描述
deque容器的迭代器也是支持随机访问的

构造函数:

#include<iostream>
#include<deque>
using namespace std;
void print_deque(deque<int>&d)
{
    for(deque<int>::iterator it=d.begin();it!=d.end();it++)
        cout<<*it<<" ";
}
int main()
{
    deque<int>d;
    for(int i=0;i<10;i++)
        d.push_back(i);
    print_deque(d);
}

运行结果如下:
在这里插入图片描述

大小操作
deque.empty();//判断容器是否为空
deque.size()//返回容器中元素的个数
deque.resize(num);//返回指定容器的长度为num,若容器边长,则以默认值填充新位置。
//如果容器变短,则末尾超出容器长度的元素被删除
deque.resize(num,elem)//同上,只是将默认值换为elem

插入和删除
两端插入操作:
push_back(elem);//尾插
push_front(elem);//头插
pop_back();//尾删
pop_front();//头删

指定位置操作:
insert(pos,elem);//在pos位插入一个elem
insert(pos,n,elem);//在pos位插入n个elem,
insert(pos,beg,end);//在pos位插入[beg,end)区间的元素
clear();//清空容器
erase(beg,end);//删除区间的元素
erase(pos);//删除pos位置的元素

数据存取

for(int i=0;i<d.size();i++)
  cout<<d[i]<<" ";
cout<<endl;

直接以这种方式访问数据元素即可

排序操作
sort(beg,end);//对区间进行排序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

布布要成为最负责的男人

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

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

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

打赏作者

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

抵扣说明:

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

余额充值