Что такое функция накопления в C++?

Конструктор копирования в C++ Программирование и разработка

В языке программирования C ++ есть определенные встроенные функции, которые упрощают выполнение рутинных задач. В частности, при работе с широким диапазоном значений или данных нам требуются такие функции, которые могут автоматизировать те задачи, которые трудно обрабатывать вручную. Функция накопления в C ++ также используется для той же цели, и в этом руководстве мы увидим, как эта функция работает на C ++ в Ubuntu 20.04.

Функция накопления в C ++ в Ubuntu 20.04

Слово «накапливать» буквально означает собирать что-то воедино, т.е. постепенно накапливать что-то для расчета общего результата. Функция накопления в C ++ в простейшей форме используется для вычисления суммы широкого диапазона различных значений. Однако его также можно использовать для других целей, например для вычисления произведения с широким диапазоном значений. Самый простой синтаксис этой функции в C ++ выглядит следующим образом:

std::accumulate(starting_range(), ending_range(), initial_value);

Функция накопления в C ++ по умолчанию принимает три аргумента (с ней также можно использовать необязательный четвертый аргумент, который мы обсудим позже). Первый аргумент, т.е. начальный_ диапазон () относится к первому значению диапазона, который должен быть накоплен, второй аргумент, то есть конечный_ диапазон () относится к последнему значению диапазона, который должен быть накоплен, тогда как третий аргумент, то есть начальное_значение, относится к значение, присвоенное переменной, в которой предполагается сохранить результат функции накопления.

Теперь перейдем к относительно сложному синтаксису функции накопления в C ++, который выглядит следующим образом:

std::accumulate(starting_range(), ending_range(), initial_value, builtin binary predicate);

В этом втором синтаксисе все значения, которые обсуждались выше, одинаковы, поэтому мы обсудим только четвертое необязательное значение, которое использовалось в этом новом синтаксисе, то есть встроенный двоичный предикат. Его заменяет встроенная функция C ++, такая как «умножение», которая затем используется для вычисления произведения значений в пределах указанного диапазона. Таким образом, функция накопления в C ++ может использоваться не только для вычисления суммы заданных значений, но и для других целей.

Примеры использования функции Accumulate в C ++ в Ubuntu 20.04

Чтобы помочь вам понять использование функции накопления в C ++, мы разработали следующие два примера, которые дадут вам базовый обзор этой функции.

Читайте также:  Веб-разработка на Python

Пример 1: Использование функции Accumulate для вычисления суммы вектора в C ++ в Ubuntu 20.04

В этом примере мы хотим вычислить общую сумму всех значений вектора в C ++. Для этого мы реализовали программу на C ++, показанную на изображении ниже:

В этом примере мы хотим вычислить общую сумму всех значений вектора в 

В этом примере кода вы могли заметить, что помимо заголовочного файла «iostream» мы также включили еще два заголовочных файла, то есть «числовой» и «векторный». Причина включения «числового» заголовочного файла состоит в том, чтобы облегчить использование функции накопления в C ++, тогда как «векторный» заголовочный файл был включен, чтобы мы могли удобно работать с векторами в C ++. Затем в нашей функции main () мы определили вектор с помощью оператора std :: vector vect {10, 20, 30}. Мы создали вектор целочисленного типа с именем «vect», который имеет три разных значения, то есть 10, 20 и 30.

Затем мы объявили переменную с именем «сумма», в которой мы хотим хранить сумму всех значений нашего вектора. Мы приравняли эту переменную к выражению «std :: accumulate (vect.begin (), vect.end (), 0)». В этом операторе мы использовали функцию накопления для вычисления суммы всех значений нашего вектора. «Vect.begin ()» относится к начальному диапазону добавляемых значений, тогда как «vect.end ()» указывает к конечному диапазону добавляемых значений. Более того, мы сохранили начальное значение переменной «сумма» равным «0». Наконец, мы использовали оператор «cout» для вывода на терминал значения переменной «sum», то есть суммы всех значений нашего вектора.

Чтобы скомпилировать эту программу на C ++, мы использовали следующую команду:

g++ Accumulate.cpp –o Accumulate

Затем для выполнения этой программы мы использовали приведенную ниже команду:

./Accumulate

После выполнения этой программы на C ++ правильное значение переменной суммы, то есть сумма всех значений нашего вектора, было напечатано на терминале, как показано на следующем изображении:

После выполнения этой программы на C ++ правильное значение переменной суммы

Пример 2: Использование функции накопления для вычисления произведения вектора в C ++ в Ubuntu 20.04

В этом примере мы хотим вычислить общий продукт всех значений вектора в C ++. Для этого мы реализовали программу на C ++, показанную на изображении ниже:

В этом примере кода вы могли заметить, что помимо файла заголовка

В этом примере кода вы могли заметить, что помимо файла заголовка «iostream» мы также включили еще три файла заголовков, то есть «числовой», «векторный» и «функциональный». Причина включения «числового» заголовочного файла состоит в том, чтобы облегчить использование функции накопления в C ++, тогда как «векторный» заголовочный файл был включен, чтобы мы могли удобно работать с векторами в C ++.

Кроме того, был включен «функциональный» заголовочный файл для использования встроенного двоичного предиката «умножения» для вычисления произведения вектора. Затем в нашей функции «main ()» мы определили вектор с помощью оператора «std :: vector vect {1, 2, 3}». Мы создали вектор целочисленного типа с именем «vect», который имеет три разных значения, то есть 1, 2 и 3.

Затем мы объявили переменную с именем «product», в которой мы хотим хранить произведение всех значений нашего вектора. Мы выровняли эту переменную с выражением «std :: accumulate (vect.begin (), vect.end (), 1, std :: multiplies ())». В этом операторе мы использовали функцию накопления, чтобы вычислить произведение всех значений нашего вектора. «Vect.begin ()» относится к начальному диапазону умножаемых значений, тогда как «vect.end ()» указывает к конечному диапазону умножаемых значений.

Затем мы сохранили начальное значение переменной «product» как «1», а предикат «std :: multiplies» был использован для вычисления фактического произведения всех значений вектора. Наконец, мы использовали оператор «cout» для вывода на терминал значения переменной «product», то есть произведения всех значений нашего вектора.

Мы скомпилировали и выполнили этот код C ++ так же, как и в нашем первом примере. После выполнения этой программы на C ++ правильное значение переменной продукта, то есть произведение всех значений нашего вектора, было напечатано на терминале, как показано на следующем изображении:

Мы скомпилировали и выполнили этот код C ++ так же, как и в нашем первом примере

Заключение

С помощью этого руководства мы хотели пролить свет на функцию накопления в C ++ в Ubuntu 20.04. Сначала мы познакомили вас с этой функцией, объяснив ее назначение и два разных синтаксиса, с которыми эта функция может использоваться в C ++. После этого мы практически реализовали два разных примера, демонстрирующих использование обоих синтаксисов функции накопления. Пройдя эти два примера, вы очень хорошо узнаете, как функцию накопления можно использовать в C ++ для вычисления совокупности предоставленного диапазона значений.

Оцените статью
bestprogrammer.ru
Добавить комментарий