PHP | Deque Functions

PHP Deque Functions


Hello folks! welcome back to a new edition of our tutorial on PHP. In this tutorial guide, we are going to be studying about the PHP Deque Functions.

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.


Accessing a value by index can require a translation between an index and its matching position in the buffer that is ((head + position) %capacity).

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

The following below is the list of Deque Functions available in PHP -

Sr.NoFunction & 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.


In our subsequent tutorials, we are going to be discussing about the above listed PHP Deque functions.


Alright guys! This is where we are going to be rounding up for this tutorial post. In our next tutorial, we are going to be discussing about PHP Ds Deque allocate() Function.

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.