add CCVector.rev_iter

This commit is contained in:
Simon Cruanes 2015-10-21 15:02:51 +02:00
parent da188ec911
commit 526cda8ecb
2 changed files with 19 additions and 0 deletions

View file

@ -586,6 +586,21 @@ let rev v =
rev (create ()) |> to_list = []
*)
let rev_iter f v =
for i = v.size-1 downto 0 do
f v.vec.(i)
done
(*$T
let v = of_list [1;2;3] in (fun f->rev_iter f v) |> Sequence.to_list = [3;2;1]
*)
(*$Q
Q.(list int) (fun l -> \
let v = of_list l in \
(fun f->rev_iter f v) |> Sequence.to_list = List.rev l)
*)
let size v = v.size
let length v = v.size

View file

@ -228,6 +228,10 @@ val rev : ('a,_) t -> ('a, 'mut) t
val rev' : ('a, rw) t -> unit
(** Reverse the vector in place *)
val rev_iter : ('a -> unit) -> ('a,_) t -> unit
(** [rev_iter f a] is the same as [iter f (rev a)], only more efficient.
@since NEXT_RELEASE *)
val size : ('a,_) t -> int
(** number of elements in vector *)