Накопительное сканирование в C++
Алгоритм inclusive_scan из C++17 кладет
в выходной диапазон накопленный результат
бинарной операции до каждого элемента включительно.
Для сложения получаются те же числа, что
и у partial_sum. Операцию можно заменить,
например, на умножение. Запишем вектор
и выведем скан:
#include <iostream>
#include <numeric>
#include <vector>
int main() {
std::vector<int> src = {1, 2, 3};
std::vector<int> out(src.size());
std::inclusive_scan(src.begin(), src.end(), out.begin());
for (int v : out) {
std::cout << v << " ";
}
std::cout << "\n";
return 0;
}
Выполните inclusive_scan для {2, 2, 2} в вектор той же длины и выведите последний элемент.