From d88799f308eb113bb473d8c51764f819f731c998 Mon Sep 17 00:00:00 2001 From: lisyarus Date: Mon, 26 Oct 2020 18:38:22 +0300 Subject: [PATCH] Add util::array mirroring --- libs/util/include/psemek/util/array.hpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/libs/util/include/psemek/util/array.hpp b/libs/util/include/psemek/util/array.hpp index d58a0e76..bd221a2c 100644 --- a/libs/util/include/psemek/util/array.hpp +++ b/libs/util/include/psemek/util/array.hpp @@ -376,6 +376,21 @@ namespace psemek::util data_ = std::move(data); } + template + void mirror(array & a, std::size_t i) + { + assert(i < N); + + auto const s = a.dim(i); + for (auto idx : a.indices()) + { + auto jdx = idx; + jdx[i] = s - 1 - jdx[i]; + if (jdx[i] < idx[i]) + std::swap(a(idx), a(jdx)); + } + } + template auto map(F && f, array const & a) {