0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

什么是deque?

汽车电子技术 来源:C语言Plus 作者:Maye426 2023-02-27 15:53 次阅读

一、什么是 deque?

双端队列(deque)和deque一样都是STL的容器,deque是双端数组,而deque是单端的。跟任意其它类型容器一样,它能够存放各种类型的对象。

二、容器特性

1.顺序序列

deque是由多个连续内存组成的。可以通过元素在序列中的位置访问对应的元素。

2.动态数组

支持对序列中的任意元素进行快速直接访问。在前端和末尾添加/删除元素操作是比较快的。

3.支持随机访问迭代器(下一章介绍)

可以用迭代器随意访问容器

三、基本函数实现

1,构造函数

  • deque();创建一个空deque
  • deque(int nSize);创建一个deque,元素个数为nSize
  • deque(int nSize,const t& t);创建一个deque,元素个数为nSize,且值均为t
  • deque(const deque&);复制构造函数
  • deque(begin,end);复制[begin,end)区间内另一个数组的元素到deque中

2.增加函数

  • void push_back(const T& x); 尾部增加一个元素X
  • void push_front(const T& x); 头部增加一个元素X
  • iterator insert(iterator it,const T& x);队列中迭代器指向元素前增加一个元素x
  • iterator insert(iterator it,int n,const T& x);队列中迭代器指向元素前增加n个相同的元素x
  • iterator insert(iterator it,const_iterator first,const_iterator last);队列中迭代器指向元素前插入另一个相同类型队列的[first,last)间的数据

3.删除函数

  • iterator erase(iterator it);删除队列中迭代器指向元素
  • iterator erase(iterator first,iterator last);删除队列中[first,last)中元素
  • void pop_back();删除队列中最后一个元素
  • void pop_front();删除队列中的第一个元素
  • void clear();清空队列中所有元素

4.遍历函数

  • reference at(int pos);返回pos位置元素的引用
  • reference operator[](int Pos);返回pos位置元素的引用
  • reference front();返回首元素的引用
  • reference back();返回尾元素的引用
  • iterator begin();返回队列头指针,指向第一个元素
  • iterator end();返回队列尾指针,指向队列最后一个元素的下一个位置
  • reverse_iterator rbegin();反向迭代器,指向最后一个元素
  • reverse_iterator rend();反向迭代器,指向第一个元素之前的位置

5.判断函数

  • bool empty() const;判断队列是否为空,若为空,则队列中无元素

6.大小函数

  • int size() const;返回队列中元素的个数
  • int max_size() const;返回最大可允许的deque元素数量值

7.其他函数

  • void swap(deque&);交换两个同类型队列的数据
  • void assign(int n,const T& x);设置队列中第n个元素的值为x
  • void assign(const_iterator first,const_iterator last);队列中[first,last)中元素设置成当前队列元素

四、基本用法

//和vector用法基本相同
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 容器
    +关注

    关注

    0

    文章

    495

    浏览量

    22060
  • 队列
    +关注

    关注

    1

    文章

    46

    浏览量

    10893
  • 双端
    +关注

    关注

    0

    文章

    6

    浏览量

    6457
收藏 人收藏

    评论

    相关推荐

    c++值deque容器

    deque 是 double-ended queue 的缩写,又称双端队列容器。deque容器支持从头部和尾部双端插入、删除数据。与vector容器不同的是,vector容器是一段连续的空间,而
    的头像 发表于 07-14 08:49 793次阅读
    c++值<b class='flag-5'>deque</b>容器

    7101242113047809312_嵌入式物联网教程视频_3.23deque容器的实现原理

    嵌入式开发指南
    小凡
    发布于 :2022年08月30日 08:37:51

    7101242135881551141_嵌入式物联网教程视频_3.24deque容器的api

    嵌入式API开发指南
    小凡
    发布于 :2022年08月30日 08:45:18

    C++零基础教程STL容器篇之deque容器,轻松上手C++STL

    编程语言C++语言
    电子学习
    发布于 :2023年01月14日 11:41:55

    HarmonyOS方舟开发框架容器类API的介绍与使用

    通过数组实现,包括ArrayList、Vector、List、LinkedList、Deque、Queue、Stack七种。线性容器类API,充分考虑了数据访问的速度,实现了运行时(Runtime)通过
    发表于 03-07 11:40

    OpenHarmony 3.1 Beta版本关键特性解析——ArkUI容器类API介绍

    及使用场景。下面,我们将为大家一一道来。1.1线性容器类线性容器类底层主要通过数组实现,包括 ArrayList、Vector、List、LinkedList、Deque、Queue、Stack 七种
    发表于 04-24 14:58

    HarmonyOS线性容器特性及使用场景

    线性容器实现能按顺序访问的数据结构,其底层主要通过数组实现,包括ArrayList、Vector、List、LinkedList、Deque、Queue、Stack七种。 线性容器,充分考虑了数据
    发表于 09-27 15:10

    夜空中最亮的星——deque容器

    一、deque工作原理:deque容器内部有个中控器,维护每段缓冲区中的内容,缓冲区中存放真实数据;中控器维护的每个缓冲区的地址,使得使用deque时像一片连续的内存空间,如下图所示:二、de
    的头像 发表于 12-24 14:42 404次阅读

    OpenHarmony 3.1 Beta版本关键特性解析——ArkUI开发框架容器类API的介绍与使用

    线性容器类底层主要通过数组实现,包括 ArrayList、Vector、List、LinkedList、Deque、Queue、Stack 七种。线性容器类 API,充分考虑了数据访问的速度,实现了运行时(Runtime)通过一条指令就可以完成增删改查等操作。
    的头像 发表于 03-17 10:48 884次阅读

    什么是queue?

    queue 容器,又称队列容器,是简单地装饰deque容器而成为另外的一种容器。
    的头像 发表于 02-27 15:43 1632次阅读

    什么是stack?

    stack 容器,又称栈容器,是简单地装饰deque容器而成为另外的一种容器。
    的头像 发表于 02-27 15:51 2733次阅读

    C++学习笔记之顺序容器

    C++中的顺序容器是一种用于存储和管理元素序列的数据结构。它们提供了一组有序的元素,并支持在序列的任意位置插入和删除元素。C++标准库中提供了多种顺序容器,包括vector、deque、list、forward_list和array。
    的头像 发表于 05-11 17:05 594次阅读

    双端队列和C++ std::deque的用法说明

    双端队列实际上是队列的一种变形,队列要求只能在队尾添加元素,在队头删除元素,而双端队列在队头和队尾都可以进行添加和删除元素的操作。
    的头像 发表于 07-18 17:43 624次阅读
    双端队列和C++ std::<b class='flag-5'>deque</b>的用法说明

    OpenHarmony语言基础类库【@ohos.util.Deque (线性容器Deque)】

    Deque(double ended queue)根据循环队列的数据结构实现,符合先进先出以及先进后出的特点,支持两端的元素插入和移除。Deque会根据实际需要动态调整容量,每次进行两倍扩容。
    的头像 发表于 04-25 21:17 211次阅读
    OpenHarmony语言基础类库【@ohos.util.<b class='flag-5'>Deque</b> (线性容器<b class='flag-5'>Deque</b>)】

    鸿蒙语言基础类库:ohos.util.Deque 线性容器Deque

    Deque(double ended queue)根据循环队列的数据结构实现,符合先进先出以及先进后出的特点,支持两端的元素插入和移除。Deque会根据实际需要动态调整容量,每次进行两倍扩容。
    的头像 发表于 07-10 09:19 237次阅读
    鸿蒙语言基础类库:ohos.util.<b class='flag-5'>Deque</b> 线性容器<b class='flag-5'>Deque</b>