mobile wallpaper 1
mobile wallpaper 2
mobile wallpaper 3
mobile wallpaper 4
369 words
1 minute
deque容器 - CPP STL
2026-10-09

deque容器基本概念#

功能:#

  • 双端数组,可以对头端进行插入删除操作

deque与vector区别:#

  • vector对于头部的插入删除效率低,数据量越大,效率越低
  • deque相对而言,对头部插入删除的速度比vector快
  • vector访问元素时的速度会比deque快,这与两者的内部实现有关
deque-struction

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填充
NOTE

deque容器无capacity(),这与vector不同

deque插入和删除#

功能描述:#

  • 向deque容器中插入和删除数据

函数原型:#

两端插入操作:

push_back(elem); //尾插元素elem
push_front(elem); //前插元素elem
pop_back(elem); //尾删元素elem
pop_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
Author
Memki
Published at
2026-10-09
License
CC BY-NC-SA 4.0

Some information may be outdated

Table of Contents