[C++]accumulate()で配列の要素同士で掛け算した積を取得するには?

C++

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

accumulate()を使って配列(array)の要素同士で掛け算した積を取得する方法を紹介します。

スポンサーリンク

方法

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

accumulate()を使って配列(array)の要素同士で掛け算した積を取得するには、4つの引数を使います。

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

#include <numeric>

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

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

accumulate()の第4引数に、2つの引数を掛け算した結果を返す関数を指定します。

//myArray=対象の配列, T=要素の型
T result = accumulate(begin(myArray), end(myArray), 1, multiplies<T>());

上記のaccumulate()は、配列の要素同士で掛け算した積を取得します。

上記では、第4引数にmultiplies()を指定して、積を取得しています。

自作の関数を指定する場合には、次のようになります。

T result = accumulate(myArray.begin(), myArray.end(), 1, [](T a, T b) { return a * b; });

使用例

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

int main(void){
    
    int nums[6] = { 11, 2, 8, 20, 7, 4 };
    
    int result = accumulate(begin(nums), end(nums), 1, multiplies<int>());
    
    cout << result << endl;
    
    return 0;
}
出力:
98560

コメント

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