inner_product関数

http://www.geocities.jp/ky_webid/cpp/library/023.html

各要素を*演算子で乗算し、その結果を+演算子で加算していきます。

言葉だけではわかりにくいので、まずinner_productと同等の処理をfor文で書いてみます。

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

int main () {
    vector<int> data;
    
    for(int i=0;i<10;++i) {
        data.push_back(i);
    }
    
    int sum = 0;
    size_t size = data.size();
    for(size_t i=0;i<size;++i) {
        sum += data[i] * data[i];
    }
    
    cout << sum << endl;
    
    return 0;
}
$ main
285

これをinner_product関数に置き換えてみます。

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

int main () {
    vector<int> data;
    
    for(int i=0;i<10;++i) {
        data.push_back(i);
    }
    
    // inner_product関数を使う
    int sum = inner_product(data.begin(),data.end(),data.begin(),0);
    
    cout << sum << endl;
    
    return 0;
}
$ main
285

同じ結果になりましたね。

さてこれは一体何に使う関数なのかというと、その名前の通り内積を求めるための関数ですね。

このあたりは別途時間をかけて勉強する予定なのでこの記事では割愛します。