Подскажите, есть ли такая функция для вектора целых чисел?
2 ответа
Да, почти. Есть функция, которая умеет сворачивать (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;
}
Или другой вариант:
#include <iostream>
#include <vector>
using namespace std;
int Multi(vector<int> v) {
int mul = 1; // сначала задаём множитель
for (int i=0; i<v.size(); i++) { // v.size() возвращает количество элементов в векторе
mul=mul*v[i]; // умножается mul на первый элемент вектора
} // а т.к. mul=1, то переменная mul
//становится равна первому элементу вектора
return mul;
}
int main() {
vector<int> vec = { 10,20,30 };
int res = Multi(vec);
cout << res << endl;
return 0;
}