The Vector class

(PECL ds >= 1.0.0)

Introduction

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).

Class synopsis

class Ds\Vector implements Ds\Sequence , ArrayAccess {
/* Constants */
const int MIN_CAPACITY = 10;
/* Methods */
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
}

Predefined Constants

Ds\Vector::MIN_CAPACITY

Changelog

Version Description
PECL ds 1.3.0 The class now implements ArrayAccess .

Table of Contents

Found A Problem?

Learn How To Improve This PageSubmit a Pull RequestReport a Bug
+add a note

User Contributed Notes

There are no user contributed notes for this page.

AltStyle によって変換されたページ (->オリジナル) /