39 : buffer_(rolling_window_size, 0.0), next_insert_(0), sum_(0.0), buffer_filled_(
false)
43 void accumulate(T val)
45 sum_ -= buffer_[next_insert_];
47 buffer_[next_insert_] = val;
49 buffer_filled_ |= next_insert_ >= buffer_.size();
50 next_insert_ = next_insert_ % buffer_.size();
53 T getRollingMean()
const
55 size_t valid_data_count = buffer_filled_ * buffer_.size() + !buffer_filled_ * next_insert_;
56 assert(valid_data_count > 0);
57 return sum_ / valid_data_count;
61 std::vector<T> buffer_;