#ifndef __RINGARRAY_H__ #define __RINGARRAY_H__ //============================================================================================================================= // m_byMaxSize ³»¿¡¼­ Data History¸¦ ³²±ä´Ù. Áï °¡Àå ¿À·¡µÈ µ¥ÀÌŸ¸¦ Áö¿ì°í »õ·Î¿î µ¥ÀÌŸ¸¦ °»½ÅÇÑ´Ù. //============================================================================================================================= #include namespace util { template class RingArray { public: RingArray() { } ~RingArray() { } void Init(DWORD iMaxSize) { m_dwCurSize = m_dwCurPos = 0; T TempData; m_Array.insert(m_Array.begin(), iMaxSize, TempData); } void InsertData(T Data) { m_Array[m_dwCurPos] = Data; if(++m_dwCurPos >= m_Array.capacity()) { m_dwCurPos = 0; } if(++m_dwCurSize > m_Array.capacity()) { --m_dwCurSize; } } T AverageData() { T SumData; DWORD dwPos; memset(&SumData, 0, sizeof(T)); for(DWORD i=0; i< m_dwCurSize; i++) { dwPos = m_dwCurPos+i; if(dwPos >= m_dwCurSize) dwPos -= m_dwCurSize; SumData += m_Array[dwPos]; } return SumData * (float)(1/m_dwCurSize); } DWORD GetSize() { return m_dwCurSize; } private: DWORD m_dwCurSize; DWORD m_dwCurPos; // ´ÙÀ½ µ¥ÀÌÅͰ¡ µé¾î°¥ ÀÚ¸® std::vector m_Array; }; } #endif