Module CCVector
Growable, mutable vector
type 'a sequence
= ('a -> unit) -> unit
type 'a klist
= unit -> [ `Nil | `Cons of 'a * 'a klist ]
type 'a gen
= unit -> 'a option
type 'a equal
= 'a -> 'a -> bool
type 'a ord
= 'a -> 'a -> int
type 'a printer
= Stdlib.Format.formatter -> 'a -> unit
val create_with : ?capacity:int -> 'a -> ('a, rw) t
Create a new vector, using the given value as a filler.
- parameter capacity
the size of the underlying array. caution: the value will likely not be GC'd before the vector is.
val return : 'a -> ('a, 'mut) t
Singleton vector.
- since
- 0.14
val make : int -> 'a -> ('a, 'mut) t
make n x
makes a vector of sizen
, filled withx
.
val init : int -> (int -> 'a) -> ('a, 'mut) t
Init the vector with the given function and size.
val ensure_with : init:'a -> ('a, rw) t -> int -> unit
Hint to the vector that it should have at least the given capacity.
- parameter init
if
capacity v = 0
, used as a filler element for the underlying array (seecreate_with
).
- since
- 0.14
val ensure : ('a, rw) t -> int -> unit
Hint to the vector that it should have at least the given capacity. Just a hint, will not be enforced if the vector is empty and
init
is not provided.
val is_empty : ('a, _) t -> bool
Is the vector empty?
val equal : 'a equal -> ('a, _) t equal
val compare : 'a ord -> ('a, _) t ord
Total ordering on vectors. Lexicographic comparison.
val pop_exn : ('a, rw) t -> 'a
Remove last element, or raise a Failure if empty.
- raises Empty
on an empty vector.
val top : ('a, _) t -> 'a option
Top element, if present.
- since
- 0.6
val top_exn : ('a, _) t -> 'a
Top element, if present.
- raises Empty
on an empty vector.
- since
- 0.6
val shrink : ('a, rw) t -> int -> unit
Shrink to the given size (remove elements above this size). Does nothing if the parameter is bigger than the current size.
val member : eq:('a -> 'a -> bool) -> 'a -> ('a, _) t -> bool
Is the element a member of the vector?
val sort : ('a -> 'a -> int) -> ('a, _) t -> ('a, 'mut) t
Sort the vector, returning a copy of it that is sorted w.r.t the given ordering. The vector itself is unchanged.
val uniq_sort : ('a -> 'a -> int) -> ('a, rw) t -> unit
Sort the array and remove duplicates, in place (e.g. modifying the vector itself).
val iter : ('a -> unit) -> ('a, _) t -> unit
Iterate on the vector's content.
val iteri : (int -> 'a -> unit) -> ('a, _) t -> unit
Iterate on the vector, with indexes.
val map_in_place : ('a -> 'a) -> ('a, _) t -> unit
Map elements of the vector in place
- since
- 2.3
val filter : ('a -> bool) -> ('a, _) t -> ('a, 'mut) t
Filter elements from the vector.
filter p v
leavesv
unchanged but returns a new vector that only contains elements ofv
satisfyingp
.
val fold : ('b -> 'a -> 'b) -> 'b -> ('a, _) t -> 'b
Fold on elements of the vector
val exists : ('a -> bool) -> ('a, _) t -> bool
Existential test (is there an element that satisfies the predicate?).
val for_all : ('a -> bool) -> ('a, _) t -> bool
Universal test (do all the elements satisfy the predicate?).
val find : ('a -> bool) -> ('a, _) t -> 'a option
Find an element that satisfies the predicate.
val find_exn : ('a -> bool) -> ('a, _) t -> 'a
Find an element that satisfies the predicate, or
- raises Not_found
if no element does.
val find_map : ('a -> 'b option) -> ('a, _) t -> 'b option
find_map f v
returns the firstSome y = f x
forx
inv
, orNone
iff x = None
for eachx
inv
.- since
- 0.14
val filter_map : ('a -> 'b option) -> ('a, _) t -> ('b, 'mut) t
Map elements with a function, possibly filtering some of them out.
val filter_map_in_place : ('a -> 'a option) -> ('a, _) t -> unit
Filter-map elements of the vector in place
- since
- 2.3
val flat_map_seq : ('a -> 'b sequence) -> ('a, _) t -> ('b, 'mut) t
Like
flat_map
, but usingsequence
for intermediate collections.- since
- 0.14
val flat_map_list : ('a -> 'b list) -> ('a, _) t -> ('b, 'mut) t
Like
flat_map
, but usinglist
for intermediate collections.- since
- 0.14
val get : ('a, _) t -> int -> 'a
Access element by its index, or
- raises Invalid_argument
if bad index.
val set : ('a, rw) t -> int -> 'a -> unit
Modify element at given index, or
- raises Invalid_argument
if bad index.
val remove : ('a, rw) t -> int -> unit
Remove the
n-th
element of the vector. Does NOT preserve the order of the elements (might swap with the last element).
val rev_iter : ('a -> unit) -> ('a, _) t -> unit
rev_iter f a
is the same asiter f (rev a)
, only more efficient.- since
- 0.14
val size : ('a, _) t -> int
Number of elements in the vector.
val capacity : (_, _) t -> int
Number of elements the vector can contain without being resized.
val unsafe_get_array : ('a, rw) t -> 'a array
Access the underlying shared array (do not modify!).
unsafe_get_array v
is longer thansize v
, but elements at higher index thansize v
are undefined (do not access!).
val (--) : int -> int -> (int, 'mut) t
Range of integers, either ascending or descending (both included, therefore the result is never empty). Example:
1 -- 10
returns the vector[1;2;3;4;5;6;7;8;9;10]
.
val (--^) : int -> int -> (int, 'mut) t
Range of integers, either ascending or descending, but excluding right. Example:
1 --^ 10
returns the vector[1;2;3;4;5;6;7;8;9]
.- since
- 0.17
val of_array : 'a array -> ('a, 'mut) t
of_array a
returns a vector corresponding to the arraya
. Operates inO(n)
time.
val of_list : 'a list -> ('a, 'mut) t
val to_array : ('a, _) t -> 'a array
to_array v
returns an array corresponding to the vectorv
.
val to_list : ('a, _) t -> 'a list
Return a list with the elements contained in the vector.
val of_seq : ?init:('a, rw) t -> 'a sequence -> ('a, rw) t
val to_seq : ('a, _) t -> 'a sequence
Return a
sequence
with the elements contained in the vector.
val to_seq_rev : ('a, _) t -> 'a sequence
to_seq_rev v
returns the sequence of elements ofv
in reverse order, that is, the last elements ofv
are iterated on first.- since
- 0.14
val slice : ('a, rw) t -> 'a array * int * int
Vector as an array slice. By doing it we expose the internal array, so be careful!.
val slice_seq : ('a, _) t -> int -> int -> 'a sequence
slice_seq v start len
is the sequence of elements fromv.(start)
tov.(start+len-1)
.
val fill_empty_slots_with : ('a, _) t -> 'a -> unit
fill_empty_slots_with v x
putsx
in the slots ofv
's underlying array that are not used (ie in the lastcapacity v - length v
slots). This is useful if you removed some elements from the vector and want to be sure they can be GC'd by erasing them from the vector.- since
- 2.4