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

Deque (class)

介绍

(没有可用的版本信息,可能只在Git中)

Deque(发音为“deck”)是连续缓冲区中的一系列值,可自动增长和缩小。该名称是“双端队列”的常用缩写,由Ds \ Queue在内部使用。

两个指针用于跟踪头部和尾部。指针可以“环绕”缓冲区的末尾,这避免了需要移动其他值来腾出空间。这使得移位和非移位速度非常快 - Ds \ Vector无法与之竞争。

按索引访问值需要在索引和其在缓冲区中的相应位置之间进行转换:((head + position) % capacity)

优势

  • 支持数组语法(方括号)。
  • 对于相同数量的值,使用比阵列少的总体内存。
  • 当尺寸下降得足够小时,自动释放分配的内存。
  • get()set()push()pop()shift()unshift()都是O(1)。

弱点

  • 容量必须是2的幂。
  • insert()remove()是O(n)。

课程简介

Ds \ Deque 实现Ds \ Sequence {

/* Constants */

const int MIN_CAPACITY = 8 ;

/* Methods */

代码语言:javascript
复制
public void allocate ( int $capacity )
代码语言:javascript
复制
public void apply ( callable $callback )
代码语言:javascript
复制
public int capacity ( void )
代码语言:javascript
复制
public void clear ( void )
代码语言:javascript
复制
public bool contains ([ mixed $...values ] )
代码语言:javascript
复制
public Ds\Deque copy ( void )
代码语言:javascript
复制
public Ds\Deque filter ([ callable $callback ] )
代码语言:javascript
复制
public mixed find ( mixed $value )
代码语言:javascript
复制
public mixed first ( void )
代码语言:javascript
复制
public mixed get ( int $index )
代码语言:javascript
复制
public void insert ( int $index [, mixed $...values ] )
代码语言:javascript
复制
public bool isEmpty ( void )
代码语言:javascript
复制
public string join ([ string $glue ] )
代码语言:javascript
复制
public mixed last ( void )
代码语言:javascript
复制
public Ds\Deque map ( callable $callback )
代码语言:javascript
复制
public Ds\Deque merge ( mixed $values )
代码语言:javascript
复制
public mixed pop ( void )
代码语言:javascript
复制
public void push ([ mixed $...values ] )
代码语言:javascript
复制
public mixed reduce ( callable $callback [, mixed $initial ] )
代码语言:javascript
复制
public mixed remove ( int $index )
代码语言:javascript
复制
public void reverse ( void )
代码语言:javascript
复制
public Ds\Deque reversed ( void )
代码语言:javascript
复制
public void rotate ( int $rotations )
代码语言:javascript
复制
public void set ( int $index , mixed $value )
代码语言:javascript
复制
public mixed shift ( void )
代码语言:javascript
复制
public Ds\Deque slice ( int $index [, int $length ] )
代码语言:javascript
复制
public void sort ([ callable $comparator ] )
代码语言:javascript
复制
public Ds\Deque sorted ([ callable $comparator ] )
代码语言:javascript
复制
public number sum ( void )
代码语言:javascript
复制
public array toArray ( void )
代码语言:javascript
复制
public void unshift ([ mixed $values ] )

}

预定义的常量

Ds\Deque::MIN_CAPACITY

目录

  • Ds \ Deque :: allocate - 为所需容量分配足够的内存。
  • Ds \ Deque :: apply - 通过对每个值应用回调函数来更新所有值。
  • Ds \ Deque :: capacity - 返回当前容量。
  • Ds \ Deque :: clear - 从deque中删除所有值。
  • Ds \ Deque :: __ construct - 创建一个新实例。
  • Ds \ Deque :: contains - 确定deque是否包含给定的值。
  • Ds \ Deque :: copy - 返回deque的浅表副本。
  • Ds \ Deque :: count - 返回集合中的值的数量。
  • Ds \ Deque :: filter - 使用callable创建一个新的deque,以确定要包含哪些值。
  • Ds \ Deque :: find - 尝试查找值的索引。
  • Ds \ Deque :: first - 返回双端队列中的第一个值。
  • Ds \ Deque :: get - 返回给定索引处的值。
  • Ds \ Deque :: insert - 在给定索引处插入值。
  • Ds \ Deque :: isEmpty - 返回deque是否为空
  • Ds \ Deque :: join - 将所有值连接为一个字符串。
  • Ds \ Deque :: jsonSerialize - 返回可以转换为JSON的表示。
  • Ds \ Deque :: last - 返回最后一个值。
  • Ds \ Deque :: merge - 返回将所有给定值添加到双端队列的结果。
  • Ds \ Deque :: pop - 删除并返回最后一个值。
  • Ds \ Deque :: push - 将值添加到双端队列的末尾。
  • Ds \ Deque :: reduce - 使用回调函数将deque减少为单个值。
  • Ds \ Deque :: remove - 通过索引删除并返回一个值。
  • Ds \ Deque :: reverse - 在原地反转deque。
  • Ds \ Deque :: reversed - 返回一个颠倒的副本。
  • Ds \ Deque :: rotate - 通过给定的旋转次数旋转deque。
  • Ds \ Deque :: set - 更新给定索引处的值。
  • Ds \ Deque :: shift - 移除并返回第一个值。
  • Ds \ Deque :: slice - 返回给定范围的子转角。
  • Ds \ Deque :: sort - 将就地排序。
  • Ds \ Deque :: sorted - 返回一个排序副本。
  • Ds \ Deque :: sum - 返回deque中所有值的总和。
  • Ds \ Deque :: toArray - 将双端转换为数组。
  • Ds \ Deque :: unshift - 将值添加到双端队列的前端。

←Ds \ Vector :: unshift

d \各显神通::分配→

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com