deque 容器
1. 基本概念
- 功能:双端数组,可以对头端进行插入删除操作,deque的迭代器支持随机访问
- 和vector的区别
- vector对于头部的插入删除效率低,数据量越大,效率越低
- deque相对而言,对头部的插入删除速度比vector快
- vector访问元素时的速度没有deque快
内部工作原理
- deque有一个中控器,维护每段缓冲区的内容,缓冲区中存放真实数据
- 中控器维护的是每个缓冲区的地址,是的使用deque时像一片连续的内存空间
- 这种结构决定了比vector插入数据时要快,然而访问数据比vector慢
2. 构造函数
- 函数原型
deque< T > deq;//默认构造函数deque(beg,end);//构造函数将[begin,end)区间的元素拷贝给本身deque(n,elem);//构造函数将n个elem拷贝给本身deque(const deque &deq);//拷贝构造函数
1 |
|
3.赋值操作
- 函数原型
deque& operator = (const deque &deq);assign(beg,end);// 将[begin,end)区间的元素拷贝给本身assign(n,elem);//将n个elem拷贝给本身
4. 大小操作
- 函数原型
deque.empty();//判断容器是否为空deque.size();//返回容器中元素的个数deque.resize(num);//重新指定容器的长度为num,若瑢变长,则以默认值填充新位置,如果变短,则末尾超出的容器长度的元素将会被删除deque.resize(n,elem);//多出的值用elem填充
5. 插入删除
函数原型
两端插入操作
push_back();//在容器尾部插入一个数据push_front();//在容器头部插入一个数据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);//删除[beg,end)区间的数据,无返回值erase(pos);//删除pos位置的元素,返回下一个数据的位置
6. 数据存取
- 函数原型
at(int idx);operator[];front();back();
7.排序
函数原型
sort(iterator beg,iterator end);//默认升序对于支持随机访问的迭代器的访问,都可以利用sort直接排序