369 words
1 minute
deque容器 - CPP STL
deque容器基本概念
功能:
- 双端数组,可以对头端进行插入删除操作
deque与vector区别:
- vector对于头部的插入删除效率低,数据量越大,效率越低
- deque相对而言,对头部插入删除的速度比vector快
- vector访问元素时的速度会比deque快,这与两者的内部实现有关

deque内部工作原理:
deque内部有个中控器,维护每段缓冲区的内容,缓冲区中存放真实数据
中控器维护的是每个缓冲区的地址,使得使用deque时像一片连续的内存空间

- deque的迭代器也是支持随机访问的
deque构造函数
功能描述:
- deque容器构造
函数原型:
deque<T> deqT; //默认构造形式deque(beg,end); //构造函数将[beg,end)区间中的元素拷贝给本身deque(n,elem); //将n个elem拷贝给本身deque(const deque& deq); //拷贝构造函数deque赋值操作
功能描述:
- 给deque容器赋值
函数原型:
deque& operator=(const deque& deq); //重载=assign(beg,end); //将[beg,end)区间中的元素拷贝赋值给本身assign(n,elem); //将n个elem拷贝赋值给本身deque大小操作
功能描述:
- 对deque容器的大小进行操作
函数原型:
empty(); //判断是否为空size(); //返回容器中元素个数resize(num); //重新指定容器的长度为num,若容器变长,则以默认值填充新位置 //若容器变短,超出部分元素删除resize(num,elem); //与上同,但默认值填充变为elem填充NOTEdeque容器无capacity(),这与vector不同
deque插入和删除
功能描述:
- 向deque容器中插入和删除数据
函数原型:
两端插入操作:
push_back(elem); //尾插元素elempush_front(elem); //前插元素elempop_back(elem); //尾删元素elempop_front(elem); //前删元素elem指定位置操作:
insert(pos,elem); //在pos位置插入elem元素的拷贝,并返回新数据的位置insert(pos,count,elem); //在pos位置插入count个elem元素,无返回insert(pos,beg,end); //在pos位置插入[beg,end)之间的元素,无返回clear(); //清空所有数据erase(beg,end); //清除[beg,end)区间的数据,返回下一个数据的位置erase(pos);//清除pos位置的数据,返回下一个数据的位置deque取元素操作
函数原型:
at(int idx); //返回idx索引的数据operator[]; //返回索引数据front(); //返回第一个元素back(); //返回最后一个元素deque排序
功能描述:
- 利用算法实现对deque容器进行排序
算法(algorithm库):
sort(iterator beg,iterator end); //对beg和end区间排序CAUTION只要支持随机访问的迭代器,都可用sort
包括vector
Video
Share
If this article helped you, please share it with others!
deque容器 - CPP STL
https://www.bilibili.com/video/BV1et411b73Z/?p=204 Some information may be outdated
Related Posts Smart