(PECL ds >= 1.0.0)
A 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: ((head + position) % capacity).