【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を活用すればコードをより簡潔に記述できます。用途や可読性の要件に応じて適切な方法を選びましょう。
-
C++のSTLでstd::arrayを実装するサンプルプログラム
C++のSTL(標準テンプレートライブラリ)には、固定長の配列を安全かつ便利に扱えるコンテナstd::arrayが用意されています。本記事では、配列に対するさまざまな操作(サイズの取得・要素の挿入・先頭/末尾要素の参照・全要素の表示など)をメニュー形式で選択できるサンプルプログラムを、擬似コード・実際のコード・実行結果とあわせて解説します。 配列に対する操作と擬似コード まず、プログラム全体の流れを擬似コードで確認しましょう。 開始 main()関数内で TRUEの間、以下を繰り返す 選択肢を表示する 選択内容を入力として受け取る sw
-
C++でSTLを使って配列の積を求める方法
C++では、STL(標準テンプレートライブラリ)のaccumulate関数を利用することで、配列内のすべての要素の積を簡潔に求めることができます。ここでは、その具体的な実装例を紹介します。 アルゴリズム 開始 配列の各要素の値を初期化する。 ユーザー定義関数 accumulate を呼び出し、配列全体の積を取得する。 計算結果を出力する。 終了 サンプルコード #include <iostream> #include <numeric> using namespace std; int ProductOfArray(int p[], int n)