功能
双端数组,可以对头端进行插入删除操作
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);//对区间进行排序