どうも、ちょげ(@chogetarou)です。
リスト(List)の要素同士で掛け算した積を取得する方法を紹介します。
方法

リスト(List)の要素同士で掛け算した積を取得する方法は、2つあります。
for文
ひとつは、for文を使う方法です。
まず、「1」で初期化した変数を用意します。
次に、for文でリストをループします。
そして、ループ処理で、用意した変数に「*」でリストの要素を掛けます。
//myList=対象のリスト
int result = 1;
for (auto it = myList.begin(); it != myList.end(); ++it) {
result *= *it;
}
上記のfor文は、リストの要素同士で掛け算した積を変数に格納します。
使用例
#include <iostream>
#include <list>
using namespace std;
int main(void){
list<int> nums = { 11, 2, 8, 20, 7, 4 };
int result = 1;
for (auto it = nums.begin(); it != nums.end(); ++it) {
result *= *it;
}
cout << result << endl;
return 0;
}
出力:
98560
accumulate()
もうひとつは、accumulate()を使う方法です。
まず、numericをインクルードします。
#include <numeric>
次に、accumulate()を呼び出します。
accumulate()の第1引数にリストのイテレータの先頭、第2引数にリストのイテレータの末尾、第3引数に「1」を指定します。
accumulate()の第4引数に、2つの引数を掛け算した結果を返す関数を指定します。
//myList=対象のリスト, T=要素の型
T result = accumulate(myList.begin(), myList.end(), 1, multiplies<T>());
上記のaccumulate()は、リストの要素同士で掛け算した積を取得します。
使用例
#include <iostream>
#include <list>
#include <numeric>
using namespace std;
int main(void){
list<int> nums = { 11, 2, 8, 20, 7, 4 };
int result = accumulate(nums.begin(), nums.end(), 1, multiplies<int>());
cout << result << endl;
return 0;
}
出力:
98560
まとめ
リスト(List)の要素同士で掛け算した積を取得する方法は、次の2つです。
- for文を使う方法
int result = 1;
for (auto it = myList.begin(); it != myList.end(); ++it) { result *= *it; }
- accumulate()を使う方法
T result = accumulate(myList.begin(), myList.end(), 1, multiplies<T>());
コメント