deque基本概念
deque是一个双端数组,可以对头端和尾端进行插入和删除操作
deque和vector的区别:
deque对于头部的插入和删除效率比vector高
vector访问元素时速度比deque快,这和两者的内部实现有关
deque内部工作原理
deque内部有个中控器,维护每段缓冲区中的内容,缓冲区中存放数据
中控器维护的是每个缓冲区的地址,使得使用deque时像一片连续的内存空间
deque的迭代器是支持随机访问的迭代器
deque构造函数
- deque<T> d; //使用模板类,默认构造函数
- deque(begin(),end()); //利用迭代器将所有元素拷贝给本身
- deque(n,elem); //将n个elem拷贝给本身
- deque(const deque& d); //拷贝构造函数
deque赋值
- deque& operator=(const deque &d); //重载赋值运算符
- assign(begin(),end()); //将全部数据拷贝给本身
- assign(n,elem); //将n个elem赋值给本身
deque大小操作
- empty(); //判断容器是否为空,是返回1,否返回0
- size(); //返回容器中元素个数
- resize(num); //重新指定容器长度为num,若容器变长,以默认值0填充新位置;若容器变短,末尾超出容器长度的部分被删除
- resize(num,elem); //重新指定容器长度为num,若容器变长,以elem填充新位置;若容器变短,末尾超出容器长度的部分被删除
deque插入和删除
- push_back(elem); //在容器尾部插入一个数据
- push_front(elem); //在容器头部插入一个数据
- pop_back(); //删除容器最后一个数据
- pop_front(); //删除容器第一个数据
- insert(pos,elem); //在迭代器pos位置插入一个elem数据,返回新数据位置
- insert(pos,n,elem); //在迭代器pos位置插入n个elem数据,无返回值
- insert(pos,begin,end); //在迭代器pos位置插入[begin,end)区间的数据,无返回值
- erase(pos); //删除迭代器pos位置的数据,返回下一个数据位置
- erase(begin,end); //删除[begin,end)区间的数据,返回下一个数据的位置
- clear(); //清空所有数据
deque数据存取
- at(int idx); //返回索引idx所指的数据
- operator[]; //重载[]
- front(); //返回容器中第一个数据元素
- back(); //返回容器中最后一个数据元素