MicroMouse Control Module  v1.3.2-2-ge2c6882
公開メンバ関数 | 全メンバ一覧
ctrl::Accumulator< T, S > クラステンプレート

データの蓄積器 [詳解]

#include <accumulator.h>

公開メンバ関数

 Accumulator (const T &value=T())
 コンストラクタ [詳解]
 
 ~Accumulator ()
 デストラクタ [詳解]
 
void clear (const T &value=T())
 バッファをクリアする関数 [詳解]
 
void push (const T &value)
 最新のデータを追加する関数 [詳解]
 
const T & operator[] (const std::size_t index) const
 直近 index 番目の値を取得するオペレータ [詳解]
 
const T average (const int n=S) const
 直近 n 個の平均を取得する関数 [詳解]
 
std::size_t size () const
 リングバッファのサイズを返す関数 [詳解]
 

詳解

template<typename T, std::size_t S>
class ctrl::Accumulator< T, S >

データの蓄積器

テンプレート引数
Tデータの型
S蓄積するデータの数

構築子と解体子

◆ Accumulator()

template<typename T , std::size_t S>
ctrl::Accumulator< T, S >::Accumulator ( const T &  value = T())
inline

コンストラクタ

引数
[in]valueバッファ内の全データに代入する初期値
26  {
27  buffer = new T[S];
28  head = 0;
29  clear(value);
30  }
void clear(const T &value=T())
バッファをクリアする関数
Definition: accumulator.h:39
呼び出し関係図:

◆ ~Accumulator()

template<typename T , std::size_t S>
ctrl::Accumulator< T, S >::~Accumulator ( )
inline

デストラクタ

34 { delete[] buffer; }

関数詳解

◆ average()

template<typename T , std::size_t S>
const T ctrl::Accumulator< T, S >::average ( const int  n = S) const
inline

直近 n 個の平均を取得する関数

引数
[in]n平均個数
戻り値
平均値
63  {
64  T sum = T();
65  for (int i = 0; i < n; i++) {
66  sum += buffer[(S + head - i) % S];
67  }
68  return sum / n;
69  }

◆ clear()

template<typename T , std::size_t S>
void ctrl::Accumulator< T, S >::clear ( const T &  value = T())
inline

バッファをクリアする関数

引数
[in]value代入する値
39  {
40  for (int i = 0; i < S; i++) buffer[i] = value;
41  }

◆ operator[]()

template<typename T , std::size_t S>
const T& ctrl::Accumulator< T, S >::operator[] ( const std::size_t  index) const
inline

直近 index 番目の値を取得するオペレータ

[0] 番目が最新のデータ、[size() - 1] 番目が最古のデータ

引数
[in]index直近何番目のデータかを指すインデックス
戻り値
直近 index 番目のデータ
55  {
56  return buffer[(S + head - index) % S];
57  }

◆ push()

template<typename T , std::size_t S>
void ctrl::Accumulator< T, S >::push ( const T &  value)
inline

最新のデータを追加する関数

45  {
46  head = (head + 1) % S;
47  buffer[head] = value;
48  }

◆ size()

template<typename T , std::size_t S>
std::size_t ctrl::Accumulator< T, S >::size ( ) const
inline

リングバッファのサイズを返す関数

73 { return S; }

このクラス詳解は次のファイルから抽出されました: