From ce4e561cac845cbb35a9e7958aa3bc9cd45cabbd Mon Sep 17 00:00:00 2001 From: lisyarus Date: Fri, 4 Dec 2020 13:09:41 +0300 Subject: [PATCH] Support merging two util::statistics --- libs/util/include/psemek/util/statistics.hpp | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/libs/util/include/psemek/util/statistics.hpp b/libs/util/include/psemek/util/statistics.hpp index 9172804c..4c63a89c 100644 --- a/libs/util/include/psemek/util/statistics.hpp +++ b/libs/util/include/psemek/util/statistics.hpp @@ -48,6 +48,9 @@ namespace psemek::util T min() const { return min_; } T max() const { return max_; } + template + friend statistics merge(statistics const & s1, statistics const & s2); + private: std::size_t count_ = 0; T sum_ = T{0}; @@ -86,4 +89,16 @@ namespace psemek::util return os; } + template + statistics merge(statistics const & s1, statistics const & s2) + { + statistics result; + result.count_ = s1.count_ + s2.count_; + result.sum_ = s1.sum_ + s2.sum_; + result.sum_sqr_ = s1.sum_sqr_ + s2.sum_sqr_; + result.min_ = std::min(s1.min_, s2.min_); + result.max_ = std::max(s1.max_, s2.max_); + return result; + } + }