PHP - Deque 函数


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

两个指针可用于跟踪头和尾,指针可以环绕缓冲区的末尾,从而避免了移动其他值以腾出空间的需要。这可以非常快速地进行移位和取消移位。

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

优点

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

缺点

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

函数列表

Deque 类提供的函数列表如下 -

函数 描述
Ds\Deque::allocate() 为所需的容量分配足够的内存。
Ds\Deque::apply() 通过对每个值应用回调函数来更新所有值。
Ds\Deque::capacity() 返回当前容量。
Ds\Deque::clear() 从 deque 中删除所有值。
Ds\Deque::contains() 确定 deque 是否包含给定的值。
Ds\Deque::__construct() 创建新实例。
Ds\Deque::copy() 返回 deque 的浅表副本。
Ds\Deque::count() 获取 Deque 中的元素数量。
Ds\Deque::filter() 通过使用 callable 来确定要包含哪些值来创建新的 deque 。
Ds\Deque::find() 尝试查找值的索引。
Ds\Deque::first() 返回 deque 中的第一个值。
Ds\Deque::get() 返回给定索引处的值。
Ds\Deque::insert() 在给定索引处插入值。
Ds\Deque::isEmpty() 返回 deque 是否为空。
Ds\Deque::join() 将所有值作为字符串联接在一起。
Ds\Deque::jsonSerialize() 返回可转换为 JSON 的表示形式。
Ds\Deque::last() 返回最后一个值。
Ds\Deque::map() 返回对每个值应用回调的结果。
Ds\Deque::merge() 返回将所有给定值添加到 deque 的结果。 
Ds\Deque::pop() 删除并返回最后一个值。
Ds\Deque::push() 将值添加到 deque 的末尾。
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() 返回给定范围的 sub-deque 。
Ds\Deque::sort() 就地对 deque 进行排序。
Ds\Deque::sorted() 返回已排序的副本。
Ds\Deque::sum() 返回 deque 中所有值的总和。
Ds\Deque::toArray() 将 deque 转换为数组。
Ds\Deque::unshift() 将值添加到双端队列的前面。