4.5 Vector Builders
(require rebellion/collection/vector/builder) | |
package: rebellion |
A vector builder is a mutable object for creating vectors. Values can be added to a builder
incrementally with vector-builder-add, and vectors can be built from a builder with
build-vector. Builders can be reused —
Vector builders try to efficiently minimize allocation when adding more elements to a builder. Constructing a vector of size N using a builder consumes an amount of space linear in N.
procedure
(vector-builder? v) → boolean?
v : any/c
procedure
(make-vector-builder [ initial-contents #:expected-size expected-size]) → vector-builder? initial-contents : (sequence/c any/c) = empty-list expected-size : (or/c natural? #f) = #f
procedure
(vector-builder-add builder v ...) → vector-builder?
builder : vector-builder? v : any/c
(define builder (make-vector-builder))
> (vector-builder-add builder 1 2 3) #<vector-builder>
> (vector-builder-add builder 4 5 6) #<vector-builder>
> (build-vector builder) '#(1 2 3 4 5 6)
procedure
(vector-builder-add-all builder elements) → vector-builder?
builder : vector-builder? elements : (sequence/c any/c)
(define builder (make-vector-builder))
> (vector-builder-add-all builder (in-range 0 5)) #<vector-builder>
> (vector-builder-add-all builder (in-range 5 10)) #<vector-builder>
> (build-vector builder) '#(0 1 2 3 4 5 6 7 8 9)
procedure
(build-vector builder) → immutable-vector?
builder : vector-builder?
(define builder (make-vector-builder))
> (build-vector (vector-builder-add builder 1 2 3)) '#(1 2 3)
> (build-vector (vector-builder-add builder 4 5 6)) '#(1 2 3 4 5 6)
procedure
(build-mutable-vector builder)
→ (and/c vector? (not/c immutable?)) builder : vector-builder?
(define builder (make-vector-builder))
> (build-mutable-vector (vector-builder-add builder 1 2 3)) '#(1 2 3)
> (build-mutable-vector (vector-builder-add builder 4 5 6)) '#(1 2 3 4 5 6)