From f193ddf41dd002e26cb2609590163efbfb7c968f Mon Sep 17 00:00:00 2001 From: lisyarus Date: Wed, 23 Sep 2020 20:19:02 +0300 Subject: [PATCH] Add util::map(array) for transforming arrays elementwise --- libs/util/include/psemek/util/array.hpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/libs/util/include/psemek/util/array.hpp b/libs/util/include/psemek/util/array.hpp index 44dbbf7b..6a799d42 100644 --- a/libs/util/include/psemek/util/array.hpp +++ b/libs/util/include/psemek/util/array.hpp @@ -31,6 +31,11 @@ namespace psemek::util array & operator = (array const &) = delete; + dims_type const & dims() const + { + return dims_; + } + std::size_t dim(std::size_t i) const { assert(i < N); @@ -298,4 +303,21 @@ namespace psemek::util data_ = std::move(data); } + template + auto map(F && f, array const & a) + { + using R = std::decay_t; + + array r(a.dims()); + + auto begin = a.begin(); + auto end = a.end(); + auto out = r.begin(); + + for (; begin != end;) + *out++ = f(*begin++); + + return r; + } + }