Support util::statistics_lite::push(value,count)

This commit is contained in:
Nikita Lisitsa 2022-06-26 16:14:51 +03:00
parent dc232b8fba
commit f3d005b4f3

View file

@ -44,7 +44,7 @@ namespace psemek::util
template <typename T>
struct statistics_lite
{
void push(T const & value);
void push(T const & value, std::size_t count = 1);
std::size_t count() const { return count_; }
T mean() const;
@ -64,11 +64,11 @@ namespace psemek::util
};
template <typename T>
void statistics_lite<T>::push(T const & value)
void statistics_lite<T>::push(T const & value, std::size_t count)
{
++count_;
sum_ += value;
sum_sqr_ += value * value;
count_ += count;
sum_ += value * static_cast<T>(count);
sum_sqr_ += value * value * static_cast<T>(count);
min_ = std::min(min_, value);
max_ = std::max(max_, value);
}