РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
391 of 815 menu

Функция partial_sum

Функция partial_sum из заголовочного файла numeric вычисляет последовательные частичные суммы элементов диапазона. Первым параметром функция принимает итератор начала исходного диапазона, вторым - итератор конца исходного диапазона, а третьим - итератор начала диапазона, куда будет записан результат. По умолчанию элементы складываются оператором +, но можно передать четвёртым параметром свою функцию для выполнения произвольной операции.

Функция возвращает итератор, указывающий на элемент, следующий за последним записанным элементом результирующего диапазона.

Синтаксис

partial_sum(first, last, d_first); partial_sum(first, last, d_first, binary_op);

Пример

Давайте вычислим частичные суммы вектора {1, 2, 3, 4, 5} и выведем результат:

#include <iostream> #include <vector> #include <numeric> using namespace std; int main() { vector<int> src = {1, 2, 3, 4, 5}; vector<int> res(src.size()); partial_sum(src.begin(), src.end(), res.begin()); for (int x : res) { cout << x << " "; } cout << endl; return 0; }

Результат выполнения кода:

1 3 6 10 15

Пример

Давайте вычислим частичные произведения вектора {1, 2, 3, 4, 5}, передав в качестве четвёртого параметра функцию multiplies:

#include <iostream> #include <vector> #include <numeric> #include <functional> using namespace std; int main() { vector<int> src = {1, 2, 3, 4, 5}; vector<int> res(src.size()); partial_sum(src.begin(), src.end(), res.begin(), multiplies<int>()); for (int x : res) { cout << x << " "; } cout << endl; return 0; }

Результат выполнения кода:

1 2 6 24 120

Пример

Давайте вычислим частичные суммы вектора {1, 2, 3, 4, 5}, записав результат прямо на место исходных элементов:

#include <iostream> #include <vector> #include <numeric> using namespace std; int main() { vector<int> res = {1, 2, 3, 4, 5}; partial_sum(res.begin(), res.end(), res.begin()); for (int x : res) { cout << x << " "; } cout << endl; return 0; }

Результат выполнения кода:

1 3 6 10 15

Смотрите также

  • функция accumulate,
    которая вычисляет сумму всех элементов диапазона
  • функция reduce,
    которая сворачивает диапазон в одно значение
  • функция inner_product,
    которая вычисляет скалярное произведение двух диапазонов
  • функция transform,
    которая применяет функцию к каждому элементу диапазона
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить