[C++]リストの平均値を取得するには?

C++

どうも、ちょげ(@chogetarou)です。

リスト(List)の平均値を取得する方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

リスト(List)の平均値を取得する方法は、3つあります。

for文

1つ目は、for文を使う方法です。

まず、初期値「0」の変数を用意します。

次に、リストをfor文でループします。

for文のループ処理で、用意した変数にリストの要素を足します。

そして、用意した変数の値をリストから呼び出した要素数で割ります。

//myList=対象のリスト, 
double sum = 0;
for (auto it = myList.begin(); it != myList.end(); ++it) {
    sum += *it;
}
double average = sum / myList.size();

上記の割り算は、対象のリスト(List)の平均値を取得します。

使用例

#include <iostream>
#include <list>
using namespace std;

int main(void){
    
    list<int> nums = { 1, 2, 3, 4, 5, 6 };
    
    double sum = 0;
    for (auto it = nums.begin(); it != nums.end(); ++it) {
        sum += *it;
    }
    double average = sum / nums.size();
    
    cout << average << endl;
    
    return 0;
}
出力:
3.5

accumulate()

2つ目は、accumulate()を使う方法です。

まず、numericをインクルードします。

#include <numeric>

次に、accumulate()を呼び出します。

accumulate()の第1引数にリストのイテレータの先頭、第2引数にリストのイテレータの末尾、第3引数に「0.0」を指定します。

そして、accumulate()の戻り値をリストの要素数で割ります。

//myList=対象のリスト, 
double average = accumulate(myList.begin(), myList.end(), 0.0) / myList.size();

上記の割り算は、対象のリスト(List)の平均値を取得します。

使用例

#include <iostream>
#include <list>
#include <numeric>
using namespace std;

int main(void){
    
    list<int> nums = { 1, 2, 3, 4, 5, 6 };
    
    double average = accumulate(nums.begin(), nums.end(), 0.0) / nums.size();
    
    cout << average << endl;
    
    return 0;
}
出力:
3.5

reduce()

3つ目は、reduce()を使う方法です。

まず、numericをインクルードします。

#include <numeric>

次に、reduce()を呼び出します。

reduce()の第1引数にリストのイテレータの先頭、第2引数にリストのイテレータの末尾、第3引数に「0」もしくは「0.0」を指定します。

そして、reduce()の戻り値をリストの要素数で割ります。

//myList=対象のリスト, 
double average = reduce(myList.begin(), myList.end(), 0.0) / myList.size();

上記の割り算は、対象のリスト(List)の平均値を取得します。

使用例

#include <iostream>
#include <list>
#include <numeric>
using namespace std;

int main(void){
    
    list<int> nums = { 1, 2, 3, 4, 5, 6 };
    
    double average = reduce(nums.begin(), nums.end(), 0.0) / nums.size();
    
    cout << average << endl;
    
    return 0;
}
出力:
3.5

まとめ

リスト(List)の平均値を取得する方法は、次の3つです。

  • for文を使う方法
    double sum = 0;
    for (auto it = myList.begin(); it != myList.end(); ++it) { sum += *it; }
    double average = sum / myList.size();
  • accumulate()を使う方法
    double average = accumulate(myList.begin(), myList.end(), 0.0) / myList.size();
  • reduce()を使う方法
    double average = reduce(myList.begin(), myList.end(), 0.0) / myList.size();

コメント

タイトルとURLをコピーしました