浅谈C++ STL deque 容器

本篇随笔简单介绍一下\(C++STL\)中\(deque\)容器的使用方法及常见使用技巧。

deque容器的概念

\(deque\)的意义是:双端队列。队列是我们常用而且必须需要掌握的数据结构。\(C++STL\)中的确有模拟队列的模板:#include<queue>中的\(queue\)和\(priority\_queue\)。队列的性质是先进先出,即从队尾入队,从队首出队。而\(deque\)的特点则是双端进出,即处于双端队列中的元素既可以从队首进/出队,也可以从队尾进/出队。

即:\(deque\)是一个支持在两端高效插入、删除元素的线性容器。

\(deque\)模板存储在\(C++STL\)的#include<deque>中。

deque容器的使用方法

因为\(deque\)容器真的和\(queue\)容器大体相同,其使用方式也大体一致。下面把\(deque\)容器的使用方式以列表的方式放在下面:

用法 作用
q.begin(),q.end() 返回deque的首、尾迭代器
q.front(),q.back() 返回deque的首、尾元素
q.push_back() 从队尾入队一个元素
q.push_front() 从队头入队一个元素
q.pop_back() 从队尾出队一个元素
q.pop_front() 从队头出队一个元素
q.clear() 清空队列

除了这些用法之外,\(deque\)比\(queue\)更优秀的一个性质是它支持随机访问,即可以像数组下标一样取出其中的一个元素。

即:q[i]

deque的一些用途

由于本蒟蒻水平有限,暂时想不出deque应用的一些实例。但有一点是肯定的:\(deque\)容器可以被应用到\(SPFA\)算法的\(SLF\)优化。其具体应用方式可见这篇博客:

关于SPFA算法的优化方式

浅谈C++ STL deque 容器的更多相关文章

  1. 浅谈C++ STL string容器

    浅谈C++ STL string容器 本篇随笔简单讲解一下\(C++STL\)中\(string\)容器的使用方法及技巧. string容器的概念 其实\(string\)并不是\(STL\)的一种容 ...

  2. 浅谈C++ STL list 容器

    浅谈C++ STL list 容器 本篇随笔简单讲解一下\(C++STL\)中\(list\)容器的使用方法和使用技巧. list容器的概念 学习过\(C++STL\)的很多同学都知道,\(STL\) ...

  3. 浅谈C++ STL vector 容器

    浅谈C++ STL vector 容器 本篇随笔简单介绍一下\(C++STL\)中\(vector\)容器的使用方法和常见的使用技巧.\(vector\)容器是\(C++STL\)的一种比较基本的容器 ...

  4. 浅谈C++ STL queue 容器

    浅谈C++ STL queue 容器 本篇随笔简单介绍一下\(C++STL\)中\(queue\)容器的使用方法和常见的使用技巧.\(queue\)容器是\(C++STL\)的一种比较基本的容器.我们 ...

  5. 浅谈C++ STL stack 容器

    浅谈C++ STL stack 容器 本篇随笔简单介绍一下\(C++STL\)中\(stack\)容器的使用方法和常见的使用技巧. stack容器的概念 \(stack\)在英文中是栈的意思.栈是一种 ...

  6. STL Deque 容器

    STL Deque 容器 Deque简介 deque是“double-ended queue”的缩写,和vector一样都是STL的容器,deque是双 端的,而vector是单端的.         ...

  7. 2.4 C++STL deque容器详解

    文章目录 2.4.1 引入 2.4.2 代码示例 2.4.3 代码运行结果 2.4.4 具体案例 总结 2.4.1 引入 deque容器类比vector容器来学习. deque为双向开口容器,见下图. ...

  8. 浅谈C++ STL

    C++ STL(标准模板库)是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量.链表.队列.栈. C++ 标准模板库的核心包括以 ...

  9. 浅谈C++ STL中的优先队列(priority_queue)

    从我以前的博文能看出来,我是一个队列爱好者,很多并不是一定需要用队列实现的算法我也会采用队列实现,主要是由于队列和人的直觉思维的一致性导致的. 今天讲一讲优先队列(priority_queue),实际 ...

随机推荐

  1. Linux下安装redis报错信息

    redis在Linux安装报错 标签: redislinuxcentos 2017-02-24 13:46 384人阅读 评论(0) 收藏 举报  分类: Linux安装工具(2)  版权声明:本文为 ...

  2. jQuery的延迟对象(十一)

    在前端这个领域里面,ajax请求非常常见. // 前提引入jquery $.ajax({ type: 'get', url: '/path/to/data', success: function (r ...

  3. 阿里Nacos初体验

    Nacos 从开源到现在已经18个releases了,更新很快,社区也很活跃,光钉钉群的人数那也是好多,每次点个查看全部成员的按钮,我的钉钉就要卡死,也有可能我没更新最新的版本. 前面写了一段时间的S ...

  4. js 的cookie问题

    获取时解码可以用decodeURIComponent(),代替 unescape() // 设置cookiefunction setCookie(name,value) { var Days = 30 ...

  5. python面试题及答案 2019

    利用切片操作,实现一个trim()函数,去除字符串首尾的空格,注意不要调用str的strip()方法. 正解1: def trim(s): while s[:1] == ' ': s = s[1:] ...

  6. Python 如何操作微信

    1.给文件传输助手发一条消息 import itchat itchat.auto_login(enableCmdQR=True) # 这里需要你人工手机扫码登录 itchat.send('Hello, ...

  7. win10下mysql5.7的安装与配置

    Win10下MySql5.7的安装与配置 下载 官网下载地址 选择免安装版即可, 解压 将下载的压缩包解压到你想要放置MySQL的目录,避免中文空格. 示例:D:\devtools\mysql-5.7 ...

  8. OpenGL入门1.7:摄像机

    每一个小步骤的源码都放在了Github 的内容为插入注释,可以先跳过 前言 我们已经知道了何为观察矩阵以及如何使用观察矩阵移动场景(我们向后移动了一点) OpenGL本身没有摄像机(Camera)的概 ...

  9. C# QRBarCode

    1. install-package barcode -v 4.0.2.2; 2. using IronBarCode; class Program { static void Main(string ...

  10. Mac下安装adb

    1.检查是否安装adb briandeMacBook-Pro:~ brian$ adb -bash: adb: command not found briandeMacBook-Pro:~ brian ...