如何使用C++STL中的deque
1、如何定义dequedeque <箪滹埘麽value_type> name;其中,value_type 是 deque 所要存储的元素类型,颖蓟段扛例如 "int","char"或者自定义的结构体名称还要在头文件中加上包含 deque 的 "#include<deque>"

2、双端队列,顾名思义,就是有两个头的队列,也就是说它既能在队首插入或删除,也能在队尾插入或删除该图片来源于网络

3、push_front(x) / push_back(x) / pop_front() / pop_back()将 x 插入队首 / 将 x 插入队尾 / 弹出队首 / 弹出队尾其中 x 的类型必须是定义时的 value_type时间复杂度 O(1)如图

4、既然是队列,那么就可以查询队头和队尾front() / back() 获取队首 / 队尾时间复杂度 O(1)如图

5、empty() / size() 判断该deque是否为空 / 返回 deque 的大小(即 deque 中插入了多少个元素)所有STL的容器都支持这两个函数时间复杂度 O(1)如图

6、clear() 清空一个 deque时间复杂度 O(deque中的元素个数)如图

7、接下来,最引人注目的内置函数即将登场!!de孥恶膈茯que 支持随机访问!!也就是说,deque 可以用 "[]"操作符严孪垅哭!!但千万不能越界哦!!所有STL的容器下标都从 0 开始,即合法访问的下标范围为 [0,deque元素个数-1]时间复杂度 O(1)!!如图

8、deque 结合了 vector 和 queue 的两大优势,比较:vector 支持:随机访问,队尾插入弹出queue 支持:队首弹出,队尾插入deque 支持:随机访问,队首队尾弹出插入看!多棒的一个容器!只是常数有点大……该图片来自于网络

9、deque 的应用:deque 有很多应用方法,其中有一个是“双端队列宽搜”当在一个图中进行 BFS(即宽搜,也称广搜),且图的边权有 0 有 1 时,我们就需要把一般进行 BFS 的 queue 换成 deque,边权为 0 从队首压入,边权为 1 从队尾压入代码就不放了,比较长……该图片来自于网络

10、以上就是 deque 的大部分使用方法,相比于众多 STL 容器,deque 所支持的功能较为全面(熟练运用 deque,走向成功人生!)