#pragma once
#include <vector>
class MeanBuffer
{
float *_buffer;
int _size;
int _next;
float _sum;
public:
MeanBuffer(int size) {
_size = size;
_next = 0;
_sum = 0;
_buffer = new float[_size];
for (int i = 0; i < _size; i++) _buffer[i] = 0;
}
~MeanBuffer() {
delete[] _buffer;
}
void Push(float val) {
_sum -= _buffer[_next];
_buffer[_next] = val;
_sum += val;
_next = (_next + 1) % _size;
}
float Mean() {
return _sum / _size;
}
};