Как найти произведение всех чисел в векторе?

Рейтинг: 5Ответов: 1Опубликовано: 23.10.2014

Подскажите, есть ли такая функция для вектора целых чисел?

Ответы

▲ 11Принят

Да, почти. Есть функция, которая умеет сворачивать (fold). Ей нужно передать два дополнительных параметра - начальное значение (в случае умножения это 1, это логично) и что делать с элементами (умножать). Вот код

#include <iostream>     // std::cout
#include <functional>   // std::multiplies
#include <numeric>      // std::accumulate
#include <vector>

int main () {
  int init = 1;
  std::vector<int> numbers = {10,20,30};

  std::cout << std::accumulate(
                   numbers.begin(), // начало для умножения
                   numbers.end(),// конец для умножения
                   init,// начальное значение
                   std::multiplies<int>());// готовая функция умножения.
  std::cout << '\n';

  return 0;
}