# The Vector class

&reftitle.intro;

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

&reftitle.classsynopsis;

            Ds\Vector

        Ds\Vector
        Ds\Sequence
        ArrayAccess

        &Constants;

         const
         int
         Ds\Vector::MIN_CAPACITY
         10

        &Methods;

&reftitle.constants;

`Ds\Vector::MIN_CAPACITY`

&reftitle.changelog;

&Version; | &Description;
PECL ds 1.3.0 | The class now implements `ArrayAccess`.

&reference.ds.ds.entities.vector;