PHP Conference Japan 2024

Deque 類別

(PECL ds >= 1.0.0)

簡介

Deque(發音為「deck」)是一個在連續緩衝區中的值序列,可以自動增長和縮小。這個名稱是「雙端佇列 (double-ended queue)」的常用縮寫,並由 Ds\Queue 內部使用。

使用兩個指標來追蹤頭部和尾部。指標可以在緩衝區的末端「環繞」,這避免了為了騰出空間而移動其他值的需要。這使得 shift 和 unshift 非常快速——這是 Ds\Vector 無法比擬的。

透過索引存取值需要在索引及其在緩衝區中對應的位置之間進行轉換:((head + position) % capacity)

優點

  • 支援陣列語法(方括號)。
  • 對於相同數量的值,比 陣列 使用更少的總記憶體。
  • 當大小下降到足夠低時,會自動釋放已配置的記憶體。
  • 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
公開 join(字串 $glue = ?): 字串
公開 last(): 混合
公開 map(可呼叫 $callback): Ds\Deque
公開 merge(混合 $values): Ds\Deque
公開 pop(): 混合
公開 push(混合 ...$values):
公開 reduce(可呼叫 $callback, 混合 $initial = ?): 混合
公開 remove(整數 $index): 混合
公開 reverse():
公開 reversed(): Ds\Deque
公開 rotate(整數 $rotations):
公開 set(整數 $index, 混合 $value):
公開 shift(): 混合
公開 slice(整數 $index, 整數 $length = ?): Ds\Deque
公開 sort(可呼叫 $comparator = ?): 無傳回值
公開 sorted(可呼叫 $comparator = ?): Ds\Deque
公開 sum(): 整數|浮點數
公開 toArray(): 陣列
公開 unshift(混合 $values = ?): 無傳回值
}

預定義常數

Ds\Deque::MIN_CAPACITY

更新日誌

版本 說明
PECL ds 1.3.0 此類別現在實作 ArrayAccess

目錄

新增註解

使用者貢獻的註解

此頁面沒有使用者貢獻的註解。
To Top