GrpcPrint/PrintC/utils/Average.h
2024-04-01 18:26:14 +08:00

44 lines
660 B
C++

#pragma once
#include <list>
template<class T, unsigned int N>
class Average
{
public:
~Average();
void AddValue(T value);
T GetAverage(void);
private:
std::list<T> m_Values;
};
template<class T, unsigned int N>
Average<T,N>::~Average()
{
m_Values.clear();
}
template<class T, unsigned int N>
void Average<T,N>::AddValue(T value)
{
if (m_Values.size() < N)
{
m_Values.push_back(value);
}
else
{
m_Values.pop_front();
m_Values.push_back(value);
}
}
template<class T, unsigned int N>
T Average<T,N>::GetAverage(void)
{
T tmp = 0;
for (auto it = m_Values.begin(); it != m_Values.end(); it++)
tmp += *it;
return tmp / m_Values.size();
}