PHP 双端队列函数


双端队列是连续缓冲区中的一系列值,可以自动增长和收缩。它是“双端队列”的常见缩写,可由 Ds\Queue 内部使用。

可以使用两个指针来跟踪头部和尾部。指针可以环绕缓冲区的末尾,从而避免需要移动其他值来腾出空间。这可以使换档和取消换档变得非常快。

通过索引访问值可能需要索引与其在缓冲区中的相应位置之间的转换:((头 + 位置)% 容量)。

优势

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

弱点

  • 容量必须是 2 的幂。
  • insert() 和remove() 的时间复杂度为O(n)。

句法

Ds\Deque implements 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

先生编号 功能说明
1

Ds\Deque::allocate() 函数

该函数可以为所需的容量分配足够的内存。

2

Ds\Deque::apply() 函数

该函数可以通过对每个值应用回调函数来更新所有值。

3

Ds\Deque::capacity() 函数

该函数可以返回当前容量。

4

Ds\Deque::clear() 函数

该函数可以从双端队列中删除所有值。

5

Ds\Deque::contains() 函数

该函数可以确定双端队列是否包含给定值。

6

Ds\Deque::__construct() 函数

该函数可以创建一个新的实例。

7

Ds\Deque::copy() 函数

该函数可以返回双端队列的浅表副本。

8

Ds\Deque::count() 函数

该函数可用于获取 Deque 中的元素数量。

9

Ds\Deque::filter() 函数

此函数可以通过使用可调用来确定要包含哪些值来创建新的双端队列。

10

Ds\Deque::find() 函数

该函数可以尝试查找值的索引。

11

Ds\Deque::first() 函数

该函数可以返回双端队列中的第一个值。

12

Ds\Deque::get() 函数

该函数可以返回给定索引处的值。

13

Ds\Deque::insert() 函数

该函数可以在给定索引处插入值。

14

Ds\Deque::isEmpty() 函数

该函数可以返回双端队列是否为空。

15

Ds\Deque::join() 函数

该函数可以将所有值连接在一起作为一个字符串。

16

Ds\Deque::jsonSerialize() 函数

此函数可以返回可转换为 JSON 的表示形式。

17 号

Ds\Deque::last() 函数

该函数可以返回最后一个值。

18

Ds\Deque::map() 函数

该函数可以返回对每个值应用回调的结果。

19

Ds\Deque::merge() 函数

该函数可以返回将所有给定值添加到双端队列的结果。

20

Ds\Deque::pop() 函数

该函数可以删除并返回最后一个值。

21

Ds\Deque::push() 函数

该函数可以将值添加到双端队列的末尾。

22

Ds\Deque::reduce() 函数

此函数可以使用回调函数将双端队列减少为单个值。

23

Ds\Deque::remove() 函数

该函数可以按索引删除并返回一个值。

24

Ds\Deque::reverse() 函数

该函数可以就地反转双端队列。

25

Ds\Deque::reversed() 函数

该函数可以返回反向副本。

26

Ds\Deque::rotate() 函数

该函数可以将双端队列旋转给定的旋转次数。

27

Ds\Deque::set() 函数

该函数可以更新给定索引处的值。

28

Ds\Deque::shift() 函数

该函数可以删除并返回第一个值。

29

Ds\Deque::slice() 函数

该函数可以返回给定范围的子双端队列。

30

Ds\Deque::sort() 函数

该函数可以就地对双端队列进行排序。

31

Ds\Deque::sorted() 函数

该函数可以返回排序后的副本。

32

Ds\Deque::sum() 函数

该函数可以返回双端队列中所有值的总和。

33

Ds\Deque::toArray() 函数

该函数可以将双端队列转换为数组。

34

Ds\Deque::unshift() 函数

该函数可以将值添加到双端队列的前面。

php_function_reference.htm