Функция reduce
Функция reduce выполняет свертку элементов
диапазона в одно значение. Она последовательно
применяет бинарную операцию к элементам
и накопленному результату. В первом и втором
параметрах мы передаем итераторы начала
и конца диапазона, в третьем - начальное
значение аккумулятора, а в четвертом -
бинарную операцию. Если операция не задана,
используется сложение.
Синтаксис
reduce(first, last, init, [op])
reduce(first, last, [op])
Пример
Давайте найдем сумму элементов вектора,
используя reduce с начальным значением 0:
#include <iostream>
#include <vector>
#include <numeric>
using namespace std;
int main()
{
vector<int> v = {1, 2, 3, 4, 5};
int res = reduce(v.begin(), v.end(), 0);
cout << res << endl;
return 0;
}
Результат выполнения кода:
15
Пример
Давайте найдем произведение элементов вектора, передав в качестве операции умножение:
#include <iostream>
#include <vector>
#include <numeric>
using namespace std;
int main()
{
vector<int> v = {1, 2, 3, 4, 5};
int res = reduce(v.begin(), v.end(), 1, multiplies<int>());
cout << res << endl;
return 0;
}
Результат выполнения кода:
120
Пример
Давайте найдем максимальный элемент вектора,
используя reduce с функцией max:
#include <iostream>
#include <vector>
#include <numeric>
#include <algorithm>
using namespace std;
int main()
{
vector<int> v = {1, 2, 3, 4, 5};
int res = reduce(v.begin(), v.end(), 0, [](int a, int b) {
return max(a, b);
});
cout << res << endl;
return 0;
}
Результат выполнения кода:
5
Смотрите также
-
функция
accumulate,
которая вычисляет сумму элементов диапазона -
функция
inner_product,
которая вычисляет скалярное произведение двух диапазонов -
функция
partial_sum,
которая вычисляет частичные суммы элементов -
функция
transform,
которая применяет операцию к каждому элементу