PHP 日本大会 2024

Deque 类

(PECL ds >= 1.0.0)

简介

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

使用两个指针来跟踪头部和尾部。指针可以“环绕”缓冲区的末尾,从而避免需要移动其他值来腾出空间。这使得 shift 和 unshift 非常快——这是Ds\Vector无法比拟的。

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

优势

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

劣势

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

类概要

class Ds\Deque implements Ds\Sequence, ArrayAccess {
/* 常量 */
const int MIN_CAPACITY = 8;
/* 方法 */
public allocate(int $capacity): void
public apply(callable $callback): void
public capacity(): int
public clear(): void
public contains(mixed ...$values): bool
public copy(): Ds\Deque
public filter(callable $callback = ?): Ds\Deque
public find(mixed $value): mixed
public first(): mixed
public get(int $index): mixed
public insert(int $index, mixed ...$values): void
public isEmpty(): bool
public join(string $glue = ?): string
public last(): mixed
public map(callable $callback): Ds\Deque
public merge(mixed $values): Ds\Deque
public pop(): mixed
public push(mixed ...$values): void
public reduce(callable $callback, mixed $initial = ?): mixed
public remove(int $index): mixed
public reverse(): void
public reversed(): Ds\Deque
public rotate(int $rotations): void
public set(int $index, mixed $value): void
public shift(): mixed
public slice(int $index, int $length = ?): Ds\Deque
public sort(callable $comparator = ?): void
public sorted(callable $comparator = ?): Ds\Deque
public sum(): int|float
public toArray(): array
public unshift(mixed $values = ?): void
}

预定义常量

Ds\Deque::MIN_CAPACITY

变更日志

版本 描述
PECL ds 1.3.0 该类现在实现了 ArrayAccess

目录

添加注释

用户贡献注释

此页面没有用户贡献的注释。
To Top