38 : buffer_(rolling_window_size, 0.0), next_insert_(0), sum_(0.0), buffer_filled_(
false)
42 void accumulate(T val)
44 sum_ -= buffer_[next_insert_];
46 buffer_[next_insert_] = val;
48 buffer_filled_ |= next_insert_ >= buffer_.size();
49 next_insert_ = next_insert_ % buffer_.size();
52 T getRollingMean()
const
54 size_t valid_data_count = buffer_filled_ * buffer_.size() + !buffer_filled_ * next_insert_;
55 assert(valid_data_count > 0);
56 return sum_ / valid_data_count;
60 std::vector<T> buffer_;