The Deque classIntroductionA Deque (pronounced “deck”) is a sequence of values in a contiguous buffer that grows and shrinks automatically. The name is a common abbreviation of “double-ended queue” and is used internally by Ds\Queue. Two pointers are used to keep track of a head and a tail. The pointers can “wrap around” the end of the buffer, which avoids the need to move other values around to make room. This makes shift and unshift very fast — something a Ds\Vector can’t compete with.
Accessing a value by index requires a translation between the index and its
corresponding position in the buffer: Strengths
Weaknesses
Class synopsisDs\Deque
class Ds\Deque
implements
Ds\Sequence, ArrayAccess {
/* Constants */
const
int
Ds\Deque::MIN_CAPACITY = 8;
/* Methods */
public void allocate(int
$capacity)public void apply(callable
$callback)public int capacity()
public void clear()
public bool contains(mixed
...$values)public Ds\Deque copy()
public Ds\Deque filter(callable
$callback = ?)public mixed find(mixed
$value)public mixed first()
public mixed get(int
$index)public void insert(int
$index, mixed ...$values)public bool isEmpty()
public string join(string
$glue = ?)public mixed last()
public Ds\Deque map(callable
$callback)public Ds\Deque merge(mixed
$values)public mixed pop()
public void push(mixed
...$values)public mixed reduce(callable
$callback, mixed $initial = ?)public mixed remove(int
$index)public void reverse()
public Ds\Deque reversed()
public void rotate(int
$rotations)public void set(int
$index, mixed $value)public mixed shift()
public Ds\Deque slice(int
$index, int $length = ?)public void sort(callable
$comparator = ?)public Ds\Deque sorted(callable
$comparator = ?)public intfloat sum()
public array toArray()
public void unshift(mixed
}$values = ?)Predefined Constants
Changelog
|