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直接排序