PHP Deque is a sequence of values in a contiguous buffer that can grow or shrink automatically. It is a common abbreviation of "double-ended queue" and can be used internally by Ds/Queue.
Two pointers can be used to keep track of a head and the tail. The pointers can wrap around the end of a buffer that avoids the need to move other values around to make room. This can make a shift and unshift very fast.
Advantages
- Has support for array syntax (square brackets).
- It uses less overall memory than an array for the same number of values.
- It automatically frees up the allocated memory when it's size drops low enough.
- get(), push(), shift(), unshift(), set(), pop() are all O(1).
Disadvantages
- The capacity must be power of 2
- insert() & remove() are O(n).
Syntax
Ds\Deque implements Ds\Sequence { /* Constants */ const int MIN_CAPACITY = 8 ; /* Methods */ public void allocate( int $capacity ) public void apply( callable $callback ) public int capacity( void ) public void clear( void ) public bool contains([ mixed $...values ] ) public Ds\Deque copy( void ) public Ds\Deque filter([ callable $callback ] ) public mixed find( mixed $value ) public mixed first( void ) public mixed get( int $index ) public void insert( int $index [, mixed $...values ] ) public bool isEmpty( void ) public string join([ string $glue ] ) public mixed last( void ) public Ds\Deque map( callable $callback ) public Ds\Deque merge( mixed $values ) public mixed pop( void ) public void push([ mixed $...values ] ) public mixed reduce( callable $callback [, mixed $initial ] ) public mixed remove( int $index ) public void reverse( void ) public Ds\Deque reversed( void ) public void rotate( int $rotations ) public void set( int $index , mixed $value ) public mixed shift( void ) public Ds\Deque slice( int $index [, int $length ] ) public void sort([ callable $comparator ] ) public Ds\Deque sorted([ callable $comparator ] ) public number sum( void ) public array toArray( void ) public void unshift([ mixed $values ] ) }
Predefined Functions
Sr.No | Function & Description |
---|---|
1 | Ds\Deque::allocate() Function This function can allocate enough memory for a required capacity. |
2 | Ds\Deque::apply() Function This function can update all values by applying a callback function to each value. |
3 | Ds\Deque::capacity() Function This function can return the current capacity. |
4 | Ds\Deque::clear() Function This function can remove all values from the deque. |
5 | Ds\Deque::contains() Function This function can determine if the deque contains given values. |
6 | Ds\Deque::__construct() Function This function can create a new instance. |
7 | Ds\Deque::copy() Function This function can return a shallow copy of the deque. |
8 | Ds\Deque::count() Function This function can be used to get the number of elements in the Deque. |
9 | Ds\Deque::filter() Function This function can create a new deque by using the callable to determine which values to include. |
10 | Ds\Deque::find() Function This function can attempt to find a value's index. |
11 | Ds\Deque::first() Function This function can return the first value in the deque. |
12 | Ds\Deque::get() Function This function can return the value at a given index. |
13 | Ds\Deque::insert() Function This function can insert the values at a given index. |
14 | Ds\Deque::isEmpty() Function This function can return whether the deque is empty. |
15 | Ds\Deque::join() Function This function can join all values together as a string. |
16 | Ds\Deque::jsonSerialize() Function This function can return a representation that can be converted to JSON. |
17 | Ds\Deque::last() Function This function can return the last value. |
18 | Ds\Deque::map() Function This function can return the result of applying a callback to each value. |
19 | Ds\Deque::merge() Function This function can return the result of adding all given values to the deque. |
20 | Ds\Deque::pop() Function This function can remove and return the last value. |
21 | Ds\Deque::push() Function This function can add values to an end of the deque. |
22 | Ds\Deque::reduce() Function This function can reduce the deque to a single value using a callback function. |
23 | Ds\Deque::remove() Function This function can remove and return a value by index. |
24 | Ds\Deque::reverse() Function This function can reverse the deque in-place. |
25 | Ds\Deque::reversed() Function This function can return a reversed copy. |
26 | Ds\Deque::rotate() Function This function can rotate the deque by a given number of rotations. |
27 | Ds\Deque::set() Function This function can update the value at a given index. |
28 | Ds\Deque::shift() Function This function can remove and return the first value. |
29 | Ds\Deque::slice() Function This function can return the sub-deque of a given range. |
30 | Ds\Deque::sort() Function This function can sort the deque in-place. |
31 | Ds\Deque::sorted() Function This function can return a sorted copy. |
32 | Ds\Deque::sum() Function This function can return the sum of all values in the deque. |
33 | Ds\Deque::toArray() Function This function can convert the deque to an array. |
34 | Ds\Deque::unshift() Function This function can add values to front of the deque. |
Do feel free to ask your questions where necessary and we will attend to them as soon as possible. If this tutorial was helpful to you, you can use the share button to share this tutorial.
Follow us on our various social media platforms to stay updated with our latest tutorials. You can also subscribe to our newsletter in order to get our tutorials delivered directly to your emails.
Thanks for reading and bye for now.