hatékonyan összefűzésére tömböt

szavazat
1

A OCaml Standard Library a funkciót String.concat

https://caml.inria.fr/pub/docs/manual-ocaml/libref/String.html

val concat : string -> string list -> string

String.concat sep slösszefűzi a sztringlistát slbeillesztése az elválasztó karakterlánc sepaz egyes.

Feltehetően ez a funkció létezik, hogy könnyebben összefűzésére sok karakter össze időben / térben lineáris hossza a szálakat.

Nincs hasonló funkciók léteznek tömbök? Különösen, van egy módja annak, hogy hatékonyan összefűzni egy tömböt együtt anélkül, hogy akár 1) írása C kiterjesztése és az épület egy trükkös közbenső szerkezet vagy 2) hatásosan hívja String.concat (Array.to_list arr)).

A kérdést 30/11/2017 00:57
a forrás felhasználó
Más nyelveken...                            


2 válasz

szavazat
1

Biztos vagyok benne, hatékonyabb módon csinálja, mint a unsafe_blit megközelítést String.concathasznál, hanem egy egyszerű fold legalábbis javulást 2. lehetőség:

Array.fold_left (fun acc s -> acc ^ s) "" arr

Ok / BuckleScript benchmark

Válaszolt 30/11/2017 01:31
a forrás felhasználó

szavazat
4

A legjobb az, hogy írjon a saját concatfunkciója utánzó String.concat. Ha valami rövidebb, egy buffert használnak, felhalmozódnak az eredmény az eredmény ( Array.iter (Buffer.add_string b) arr) - ne ismételjük összefüggések ami generál túl sok előirányzatokat.

Válaszolt 30/11/2017 08:16
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more