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; + } + }