PHP 8.1.24 Released!

La clase Deque

(No version information available, might only be in Git)

Introducción

Un Deque (pronunciado “deck”) es una secuencia de valores en un búfer contiguo que crece y se contrae automáticamente. El nombre es una abreviación inglesa común de “double-ended queue” (cola de doble final) y es usado internamente por Ds\Queue.

Dos punteros son usados para mantener el seguimiento de una cabecera y una cola. Los punteros pueden “envolver alrededor” el final del búfer, lo cual evita la necesidad de mover otros valores alrededor para hacer un espacio. Esto permite que hacer cambios y deshacer cambios sean muy rápidos —  algo en que Ds\Vector no puede competir.

Accediendo a un valor por el índice requiere una traducción entre el índice y su posición correspondiente en el búfer: ((cabecera + posición) % capacidad).

Fortalezas

  • Soporta la sintaxis array (corchetes).
  • Utiliza menos memoria total que un array para el mismo número de valores.
  • Automáticamente libera la memoria asignada cuando su tamaño cae lo suficientemente bajo.
  • get(), set(), push(), pop(), shift(), y unshift() son todos O(1).

Debilidades

  • La capacidad debe ser una potencia de 2.
  • insert() y remove() son O(n).

Sinopsis de la Clase

class Ds\Deque implements Ds\Sequence {
/* Constantes */
const int MIN_CAPACITY = 8;
/* Métodos */
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
}

Constantes predefinidas

Ds\Deque::MIN_CAPACITY

Tabla de contenidos

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top