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

C++

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

Vectorの平均値を取得する方法を紹介します。

スポンサーリンク

方法

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

Vectorの平均値を取得する方法は、3つあります。

accumulate()

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

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

#include <numeric>

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

accumulate()の第1引数にVectorのbegin()、第2引数にVectorのend()を指定します。

accumulate()の第3引数に「0.0」を指定します。

そして、accumulate()の結果を、Vectorのsize()で割ります。

//vect=任意のVector
double average = accumulate(vect.begin(), vect.end(), 0.0) / vect.size();

上記の割り算は、Vectorの平均値を取得します。

使用例

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

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

std::reduce() ※C++17以降

2つ目は、std::reduce()を使う方法です。

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

#include <numeric>

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

std::reduce()の第1引数にVectorのbegin()、第2引数にVectorのend()を指定します。

std::reduce()の第3引数に「0.0」を指定します。

そして、std::reduce()の結果を、Vectorのsize()で割ります。

//vect=任意のVector
double average = std::reduce(vect.begin(), vect.end(), 0.0) / vect.size();

上記の割り算は、Vectorの平均値を取得します。

std::reduce()は、C++17から使用できる関数です。

使用例

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

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

forループ

3つ目は、forループを使う方法です。

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

次に、Vectorをfor文でループします。

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

最後に、変数の値を、Vectorのsize()で割ります。

//vect=任意のVector
double sum = 0.0;
for (int i = 0; i < vect.size(); i++) {
    sum += vect[i];
}
double average = sum / vect.size();

最後の割り算で、Vectorの平均値を取得できます。

使用例

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

int main(void){
    vector<int> num = { 1, 2, 3, 4, 5, 6 };
  
    double sum = 0.0;
    for (int i = 0; i < num.size(); i++) {
        sum += num[i];
    }
    double average = sum / num.size();
    
    cout << average;
}
出力:
3.5
スポンサーリンク

まとめ

Vectorの平均値を取得する方法は、次の3つです。

  • accumulate()を使う方法
    double average = accumulate(vect.begin(), vect.end(), 0.0) / vect.size();
  • std::reduce()を使う方法
    double average = std::reduce(vect.begin(), vect.end(), 0.0) / vect.size();
  • forループを使う方法

コメント

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