The Vector class

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

Introducere

A Vector is a sequence of values in a contiguous buffer that grows and shrinks automatically. It’s the most efficient sequential structure because a value’s index is a direct mapping to its index in the buffer, and the growth factor isn't bound to a specific multiple or exponent.

Strengths

  • Supports array syntax (square brackets).
  • Uses less overall memory than an array for the same number of values.
  • Automatically frees allocated memory when its size drops low enough.
  • Capacity does not have to be a power of 2.
  • get(), set(), push(), pop() are all O(1).

Weaknesses

  • shift(), unshift(), insert() and remove() are all O(n).

Sinopsisul clasei

Ds\Vector implements Ds\Sequence , ArrayAccess {
/* Constants */
const int MIN_CAPACITY = 10 ;
/* Metode */
public allocate ( int $capacity ) : void
public apply ( callable $callback ) : void
public capacity ( ) : int
public clear ( ) : void
public contains ( mixed ...$values ) : bool
public copy ( ) : Ds\Vector
public filter ( callable $callback = ? ) : Ds\Vector
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\Vector
public merge ( mixed $values ) : Ds\Vector
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\Vector
public rotate ( int $rotations ) : void
public set ( int $index , mixed $value ) : void
public shift ( ) : mixed
public slice ( int $index , int $length = ? ) : Ds\Vector
public sort ( callable $comparator = ? ) : void
public sorted ( callable $comparator = ? ) : Ds\Vector
public sum ( ) : int|float
public toArray ( ) : array
public unshift ( mixed $values = ? ) : void
}

Constante predefinite

Ds\Vector::MIN_CAPACITY

Istoricul schimbărilor

Versiune Descriere
PECL ds 1.3.0 The class now implements ArrayAccess.

Cuprins

add a note add a note

User Contributed Notes 1 note

up
0
fgheorghe at grosan dot co dot uk
8 years ago
It would be great if this class would not be final. A use case where I would want to extend the functionality, would be to enforce Vector items of a certain type - and emulate Java generics. I.e.:
public mixed get ( int $index ) : ClassName
public void set ( int $index , mixed $value ) : ClassName

Thus ensuring my vectors are made strictly of a certain type. I can emulate this behaviour with \ArrayAccess and \Iterator, but given this library is far more efficient I would prefer it over these two interfaces, when defining my datasets.
To Top