Функция inner_product
Функция inner_product вычисляет скалярное
произведение двух диапазонов. Она перемножает
соответствующие элементы первого и второго
диапазонов, а затем суммирует полученные
произведения, начиная с заданного начального
значения. В первый и второй параметры мы передаем
итераторы начала и конца первого диапазона, в
третий - итератор начала второго диапазона, а в
четвертый - начальное значение суммы. Дополнительно
можно указать свои функции для операции сложения
и умножения.
Синтаксис
inner_product(first1, last1, first2, init)
inner_product(first1, last1, first2, init, op1, op2)
Пример
Давайте вычислим скалярное произведение двух
векторов с начальным значением 0:
#include <iostream>
#include <vector>
#include <numeric>
using namespace std;
int main()
{
vector<int> v1 = {1, 2, 3, 4, 5};
vector<int> v2 = {5, 4, 3, 2, 1};
int res = inner_product(v1.begin(), v1.end(), v2.begin(), 0);
cout << res << endl;
return 0;
}
Результат выполнения кода:
35
Пример
Давайте вычислим скалярное произведение с
начальным значением 100:
#include <iostream>
#include <vector>
#include <numeric>
using namespace std;
int main()
{
vector<int> v1 = {1, 2, 3, 4, 5};
vector<int> v2 = {5, 4, 3, 2, 1};
int res = inner_product(v1.begin(), v1.end(), v2.begin(), 100);
cout << res << endl;
return 0;
}
Результат выполнения кода:
135
Пример
Давайте используем свои функции для операции сложения и умножения, чтобы вычислить произведение сумм соответствующих элементов:
#include <iostream>
#include <vector>
#include <numeric>
using namespace std;
int main()
{
vector<int> v1 = {1, 2, 3, 4, 5};
vector<int> v2 = {5, 4, 3, 2, 1};
int res = inner_product(
v1.begin(), v1.end(), v2.begin(), 1,
[](int a, int b) { return a * b; },
[](int a, int b) { return a + b; }
);
cout << res << endl;
return 0;
}
Результат выполнения кода:
216
Смотрите также
-
функция
accumulate,
которая суммирует элементы диапазона -
функция
reduce,
которая сворачивает диапазон в одно значение -
функция
partial_sum,
которая вычисляет частичные суммы диапазона -
функция
transform,
которая применяет функцию к элементам диапазона