在线文档教程
PHP
数据结构 | Data Structures

Deque (class)

The 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 */

public void allocate ( int $capacity )

public void apply ( callable $callback )

public int capacity ( void )

public void clear ( void )

public bool contains ([ mixed $...values ] )

public Ds\Deque copy ( void )

public Ds\Deque filter ([ callable $callback ] )

public mixed find ( mixed $value )

public mixed first ( void )

public mixed get ( int $index )

public void insert ( int $index [, mixed $...values ] )

public bool isEmpty ( void )

public string join ([ string $glue ] )

public mixed last ( void )

public Ds\Deque map ( callable $callback )

public Ds\Deque merge ( mixed $values )

public mixed pop ( void )

public void push ([ mixed $...values ] )

public mixed reduce ( callable $callback [, mixed $initial ] )

public mixed remove ( int $index )

public void reverse ( void )

public Ds\Deque reversed ( void )

public void rotate ( int $rotations )

public void set ( int $index , mixed $value )

public mixed shift ( void )

public Ds\Deque slice ( int $index [, int $length ] )

public void sort ([ callable $comparator ] )

public Ds\Deque sorted ([ callable $comparator ] )

public number sum ( void )

public array toArray ( void )

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 \各显神通::分配→