C++
 Computer >> コンピューター >  >> プログラミング >> C++

【C++入門】配列の合計を求める3つの方法|STLのaccumulate関数の使い方

配列とその合計とは

配列は、同じデータ型の複数の要素を連続したメモリ領域に格納する、最も基本的な線形データ構造の一つです。

「配列の合計」とは、配列に含まれるすべての要素の値を加算した結果のことです。

C++には配列の合計を求める方法が複数用意されており、本記事では代表的な3つの方法をサンプルコードとともに解説します。

方法1:古典的なループ処理による合計

もっとも基本的な方法は、for文で配列の各要素を順番に走査し、その値を合計用の変数に加算していくやり方です。処理の流れが明快で、初心者にも理解しやすいのが特徴です。

アルゴリズム

手順1 : i を 0 から n-1 まで繰り返す
手順2 : sum = sum + arr[i]
手順3 : sum を出力する

サンプルコード

#include <iostream>
using namespace std;
int main (){
   int arr[] = { 2, 5, 7, 8, 2, 6, 9 };
   int n = 7, sum = 0;
   for(int i = 0; i<n ; i++){
      sum+=arr[i];
   }
   cout<<"配列の合計は "<<sum;
   return 0;
}

実行結果

配列の合計は 39

方法2:accumulate関数を使う

C++の標準ライブラリには、範囲内の要素の合計(または指定した演算の結果)を求めるaccumulate関数が用意されています。この関数を利用するには、<numeric>ヘッダーをインクルードする必要があります。

第3引数には初期値を渡します。この初期値を起点として加算が行われるため、通常は0を指定します。

構文

accumulate(配列名 , 配列名+長さ , 初期値);

サンプルコード

#include <iostream>
#include <numeric>
using namespace std;
int main (){
   int arr[] = { 2, 5, 7, 8, 2, 6, 9 };
   int n = 7, sum = 0;
   sum = accumulate(arr, arr+n, sum);
   cout<<"配列の合計は "<<sum;
   return 0;
}

実行結果

配列の合計は 39

方法3:vectorに対してaccumulateを使う

STLのコンテナであるstd::vectorに対しても、同様にaccumulate関数を使用できます。イテレータ(begin()・end())を渡すだけで、ベクター内の全要素の合計を簡単に取得できるのが便利です。

サンプルコード

#include <iostream>
#include <vector>
#include <numeric>
using namespace std;
int arraySum(vector<int> &v){
   int initial_sum = 0;
   return accumulate(v.begin(), v.end(), initial_sum);
}
int main(){
   vector<int> v{12, 56, 76, 2, 90 , 3} ;
   int sum = 0;
   sum=accumulate(v.begin(), v.end(), sum);
   cout<<"配列の合計は "<<sum;
   return 0;
}

実行結果

配列の合計は 239

まとめ

配列の合計を求める方法として、①forループで手動加算する方法、②<numeric>ヘッダーのaccumulate関数を使う方法、③vector+accumulateを組み合わせる方法の3つを紹介しました。シンプルな処理であればループでも十分ですが、accumulateを活用すればコードをより簡潔に記述できます。用途や可読性の要件に応じて適切な方法を選びましょう。

  1. C++のSTLでstd::arrayを実装するサンプルプログラム

    C++のSTL(標準テンプレートライブラリ)には、固定長の配列を安全かつ便利に扱えるコンテナstd::arrayが用意されています。本記事では、配列に対するさまざまな操作(サイズの取得・要素の挿入・先頭/末尾要素の参照・全要素の表示など)をメニュー形式で選択できるサンプルプログラムを、擬似コード・実際のコード・実行結果とあわせて解説します。 配列に対する操作と擬似コード まず、プログラム全体の流れを擬似コードで確認しましょう。 開始 main()関数内で TRUEの間、以下を繰り返す 選択肢を表示する 選択内容を入力として受け取る sw

  2. C++でSTLを使って配列の積を求める方法

    C++では、STL(標準テンプレートライブラリ)のaccumulate関数を利用することで、配列内のすべての要素の積を簡潔に求めることができます。ここでは、その具体的な実装例を紹介します。 アルゴリズム 開始 配列の各要素の値を初期化する。 ユーザー定義関数 accumulate を呼び出し、配列全体の積を取得する。 計算結果を出力する。 終了 サンプルコード #include <iostream> #include <numeric> using namespace std; int ProductOfArray(int p[], int n)