Module CCVector
Growable, mutable vector
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, the value is used to enforce the type the new vector.
- parameter capacity
the size of the underlying array.
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 clear_and_reset : ('a, rw) t -> unit
Clear the content of the vector, and deallocate the underlying array, removing references to all the elements.
- since
- 2.8
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 to enforce the type of the vector (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 append_seq : ('a, rw) t -> 'a Stdlib.Seq.t -> unit
Append content of iterator. Renamed from
append_std_seq
since 3.0.- since
- 3.0
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 truncate : ('a, rw) t -> int -> unit
Truncate to the given size (remove elements above this size). Does nothing if the parameter is bigger than the current size.
truncate
was calledshrink
.- since
- 3.0
val shrink_to_fit : ('a, _) t -> unit
Shrink internal array to fit the size of the vector
- since
- 2.8
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. The underlying array of the new vector can be smaller than the original one.
val sort' : ('a -> 'a -> int) -> ('a, rw) t -> unit
Sort the vector in place (modifying it). This function change the size of the underlying array.
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 mapi : (int -> 'a -> 'b) -> ('a, _) t -> ('b, 'mut) t
map f v
is just likemap
, but it also passes in the index of each element as the first argument to the functionf
.- since
- 2.8
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 filter_in_place : ('a -> bool) -> ('a, rw) t -> unit
Filter elements from the vector in place.
- since
- 3.0
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 Stdlib.Seq.t) -> ('a, _) t -> ('b, 'mut) t
Like
flat_map
, but usingSeq
for intermediate collections. Renamed fromflat_map_std_seq
since 3.0.- since
- 3.0
val flat_map_list : ('a -> 'b list) -> ('a, _) t -> ('b, 'mut) t
Like
flat_map
, but usinglist
for intermediate collections.- since
- 0.14
val monoid_product : ('a -> 'b -> 'c) -> ('a, _) t -> ('b, _) t -> ('c, _) t
All combinaisons of tuples from the two vectors are passed to the function.
- since
- 2.8
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_and_shift : ('a, rw) t -> int -> unit
remove_and_shift v i
remove thei-th
element fromv
. Move elements that are after thei-th
inv
. Preserve the order of the elements inv
. Seeremove_unordered
for constant time function.- since
- 3.0
val remove_unordered : ('a, rw) t -> int -> unit
remove_unordered v i
remove thei-th
element fromv
. Does NOT preserve the order of the elements inv
(might swap with the last element). Seeremove_and_shift
if you want to keep the ordering.
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 Stdlib.Seq.t -> ('a, rw) t
Convert an Iterator to a vector. Renamed from
of_std_seq
since 3.0.- since
- 3.0
val to_iter_rev : ('a, _) t -> 'a iter
to_iter_rev v
returns the sequence of elements ofv
in reverse order, that is, the last elements ofv
are iterated on first.- since
- 2.8
val to_seq : ('a, _) t -> 'a Stdlib.Seq.t
Return an iterator with the elements contained in the vector. Renamed from
to_std_seq
since 3.0.- since
- 3.0
val to_seq_rev : ('a, _) t -> 'a Stdlib.Seq.t
to_seq v
returns the sequence of elements ofv
in reverse order, that is, the last elements ofv
are iterated on first. Renamed fromto_std_seq
since 3.0.- since
- 3.0
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_iter : ('a, _) t -> int -> int -> 'a iter
slice_iter v start len
is the sequence of elements fromv.(start)
tov.(start+len-1)
.- since
- 3.0
val of_gen : ?init:('a, rw) t -> 'a gen -> ('a, rw) t
val to_gen : ('a, _) t -> 'a gen
val to_string : ?start:string -> ?stop:string -> ?sep:string -> ('a -> string) -> ('a, _) t -> string
Print the vector in a string
- since
- 2.7
val pp : ?pp_start:unit printer -> ?pp_stop:unit printer -> ?pp_sep:unit printer -> 'a printer -> ('a, _) t printer
pp ~pp_start ~pp_stop ~pp_sep pp_item ppf v
formats the vectorv
onppf
. Each element is formatted withpp_item
,pp_start
is called at the beginning,pp_stop
is called at the end,pp_sep
is called between each elements. By defaultspp_start
andpp_stop
does nothing andpp_sep
defaults to (fun out -> Format.fprintf out ",@ ").
Let operators on OCaml >= 4.08.0, nothing otherwise
- since
- 2.8