首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java中的Deque

Deque 我们知道,Queue是队列,只能一头进,另一头出。 如果把条件放松一下,允许两头都进,两头都出,这种队列叫双端队列(Double Ended Queue),学名Deque /dek/。...我们来比较一下Queue和Deque出队和入队的方法: Queue Deque 添加元素到队尾 add(E e) / offer(E e) addLast(E e) / offerLast(E e)...注意到Deque接口实际上扩展自Queue: public interface Deque extends Queue { ... } 因此,Queue提供的add()/offer(...)方法在Deque中也可以使用,但是,使用Deque,最好不要调用offer(),而是调用offerLast(): import java.util.Deque; import java.util.LinkedList...Deque是一个接口,它的实现类有ArrayDeque和LinkedList。 我们发现LinkedList真是一个全能选手,它即是List,又是Queue,还是Deque

7310
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    STL——deque详解

    vector快 vector访问元素时的速度会比deque快,这和两者内部实现有关 deque内部工作原理: deque内部有个中控器,维护每段缓冲区中的内容,缓冲区中存放真实数据中控器维护的是每个缓冲区的地址...,使得使用deque时像一片连续的内存空间 deque容器的代器也是支持随机访问的 deque构造函数 功能描述: deque容器构造 函数原型: deque degT;...//默认构造形式 deque(beg,end); //构造函数将[begend)区间中的元素拷贝给本身 deque(n, elem); //构造函数将n个elem拷贝给本身 deque...dequed4(d3); Print(d4); deque赋值操作 功能描述: 给deque容器进行赋值 函数原型: deque&roperator=(const deque &...注意:deque容器没有容量的限制,这点和vector容器有差别,这是因为deque内部有一个中控器,维护每段缓冲区中的内容,缓冲区中存放真实数据中控器维护的是每个缓冲区的地址 dequed1

    10510

    【C++】STL——deque

    ,比如: 3.deque的介绍 deque( 双端队列 ) :是一种双开口的 " 连续 " 空间的数据结构 ,双开口的含义是:可以在头尾两端 进行插入和删除操作,且时间复杂度为 O(1) ,...deque 并不是真正连续的空间,而是由一段段连续的小空间拼接而成的,实际 deque 类似于一个 动态的二维数组 ,其底层结构如下图所示: 双端队列底层是一段假象的连续空间,实际是分段连续的...,为了维护其 “ 整体连续 ” 以及随机访问 的假象,落在了 deque 的迭代器身上, 因此 deque 的迭代器设计就比较复杂,如下图所示: 那deque是如何借助其迭代器维护其假想连续的结构呢...4.deque缺陷 与 vector 比较 , deque 的优势是:头部插入和删除时, 不需要搬移元素,效率特别高 ,而且在 扩 容时,也不需要搬移大量的元素 ,因此其效率是比 vector...但是, deque 有一个致命缺陷:不适合遍历,因为在遍历时, deque 的迭代器要频繁的去检测其 是否移动到某段小空间的边界,导致效率低下 ,而序列式场景中,可能需要经常遍历,因此 在实

    4210

    【Java】10 Deque 接口

    java.util.Deque 是支持两端元素插入和移除的线性集合。 名称 deque 是 “双端队列” 的缩写,通常发音为“deck”。...大多数 Deque 实现对它们可能包含的元素的数量没有固定的限制,但是该接口支持容量限制的 deques 以及没有固定大小限制的 deques。...---- 二、ArrayDeque 集合    Deque 接口提供了一个典型的实现类:ArrayDeque,它是一个基于数组实现的双端队列,创建 Deque 时同样可指定一个 numElements...参数,该参数用于指定 Object 数组的长度;如果不指定 numElements 参数,Deque 底层数组的默认长度为16。...除此之外,LinkedList 集合还实现了 Deque 接口,既可以被当成 “栈” 来使用,也可以当成 “队列” 使用。

    48340

    vector list deque 的异同

    Deque 与 vector 相比,功能上的差异如下: · 两端都能快速安插元素和移除元素(vector 只在尾端能这样)。 · 访问元素的时候比vector慢一点,多了个间接的过程。...· deque 不支持对容量和内存重新分配时机的控制。 · 内部结构是 多个块,前后插入,是插入在头尾的块,满了一部分,又增加多一个块,所以不需要像vector那样,重新分配,复制。...deque,vector 与 list 比较: · 随机访问好,但是中间移除插入元素就比list要差劲。...· 前后插入 deque 和 list 一样,vector前插入于中间插入一致,后插入就大家都一样。...vector 是一个动态数组; deque 类似一个,拥有数量可变的数组; list 双向链表; 总结: 1.如果你要频繁的往中间插入或者移除,你就用list。

    50521

    C++STL容器deque

    deque容器 deque容器基本概念 功能: 双端数组,可以对头端进行插入删除操作 deque与vector区别: vector对于头部的插入删除效率低,数据量越大,效率越低 deque相对而言,对头部的插入删除速度回比...vector快 vector访问元素时的速度会比deque快,这和两者内部实现有关 deque内部工作原理: deque内部有个中控器,维护每段缓冲区中的内容,缓冲区中存放真实数据 中控器维护的是每个缓冲区的地址...,使得使用deque时像一片连续的内存空间 deque容器的迭代器也是支持随机访问的 deque构造函数 功能描述: deque容器构造 函数原型: deque deqT;...deque(const deque &deq); //拷贝构造函数 示例: #include void printDeque(const deque& d) { for...deque赋值操作 功能描述: 给deque容器进行赋值 函数原型: deque& operator=(const deque &deq); //重载等号操作符 assign(beg

    40820

    vector与deque的比较

    deque是具有两端扩缩功能的序列容器。其存储方式与vector相反,deque的元素不是相接存储的,是由一段一段等长的连续空间构成的,各段之间并不一定是连续的。...当deque容器需要在头部或者尾部增加空间的时候,它会申请一段新的连续空间,同时在map数组的开头或者结尾添加指向该空间的指针,由此将deque元素串接起来。...总结 vector和deque的对比如下表所示: vector deque 头文件 使用需要包含头文件 使用需要包含头文件 存储方式 连续存储元素 包含元素连续存储的内存快列表...deque的存储按需自动扩展及收缩,扩展deque比扩张vector更优,因为它不涉及到复制既存元素到新内存位置。...但另外一方面,deque典型地拥有较大的最小内存开销,所以当即使保有一个元素的时候,deque也需要为它分配它的整个内部数组。

    31610

    deque容器01之构造函数

    deque容器介绍 功能: 双端数组,可以对头部进行添加和删除的操作 deque和vector的区别: vector对于头部的插入和删除效率低,数据量越大,效率越低 deque相对而言,对于头部的插入和删除速度会比...**deque内部工作原理: ** deque内部有一个中控器,维护每段缓冲区的内容,缓冲区中存放真实数据,中控器维护的是每个缓冲区的地址,使得使用debug时像一片连续的内存空间 ?...deque容器的迭代器也支持随机访问的 构造函数 函数原型: ?...#include using namespace std; #include //deque的构造函数 void p(const deque& d) { for...(), d1.end()); p(d2); //3.n个elem拷贝给本身 deque d3(1, 521); p(d3); //4.拷贝构造 deque d4(d3);

    32730

    vector对比list & deque的引出

    双端队列deque deque的特性 deque(双端队列)结合了vector和list的优缺点,提供了在两端进行高效插入和删除的能力,同时支持高效的随机访问。...基于deque的如上特性,经常用来作为queue的实现所基于的容器。...deque的底层实现原理 deque(双端队列)的底层实现可以理解为一个动态的分段数组。它结合了数组和链表的优点,通过一组固定大小的小数组(称为块或缓冲区)来管理数据。...每个块的大小是固定的,但deque可以动态增加或减少块的数量。 deque起初是在多个块的中间位置开始建立,如此可以更高效的向前或者向后延伸。...插入与删除 deque支持在两端高效的插入和删除,这主要得益于其分段结构。

    8110
    领券