Я ищу функцию в C++, чтобы вернуть суммирование по всем элементам массива, аналогично тому, что мы имеем в Matlab, т. Е. Sum (A), где A - массив. Я знаю, что можно просто сделать цикл for, но нет ли какой-либо функции, например, в «std ::»?C++: какие функции дают сумму массива?
ответ
Эта функция называется std::accumulate
и находится в <numeric>
.
Он работает как с контейнерами стандартной библиотеки (которые могут предоставить InputIterator
, так что почти каждый из них) и массивы C-стиля - при условии, что вы используете std::begin
и std::end
. В противном случае container.begin()/end()
, конечно, хорошо; обратитесь к примеру использования для получения дополнительной информации.
Следует отметить, что он снабжен двумя перегрузками, один из которых добавляет BinaryOperation
. По умолчанию он равен std::plus
в другой версии. На практике это означает, что он становится fold
или reduce
с других языков.
Пример использования массивов С-стиле, предоставляемые @BoBTFish - ideone link.
#include <iostream>
#include <iterator>
#include <numeric>
int main()
{
int nums[] = {1,5,3,2,7,8,100,3};
std::cout
<< std::accumulate(std::begin(nums),
std::end(nums),
0)
<< '\n';
}
«Специализируется на массивах C-стиля»? [Где?] (Http://en.cppreference.com/w/cpp/algorithm/accumulate). Вы имеете в виду, что 'std :: begin' и' std :: end' есть? – BoBTFish
@BoBTFish Хм, ты прав. Поскольку 'accumulate' использует' std :: begin/end', он использует * свою * специализацию. Я проясню это. При этом специализации являются частью реализации, а не представленной подписи (что не делает мое первоначальное утверждение менее ошибочным). –
'std :: accumulate' не использует' std :: begin/end', хотя вы, скорее всего, используете их при вызове. Разве вы не имеете в виду какую-то новую версию диапазона, которая пока не стандартная? – BoBTFish
- 1. Какие функции JavaScript-массива мутируют?
- 2. Какие функции KVM дают управление Qemu и когда
- 3. Найти сумму элементов массива
- 4. вызывающие функции дают «NoSuchElementException»
- 5. Как вывести сумму строк двумерного массива C++
- 6. выполнить сумму из массива в C
- 7. C++ хранить сумму переменной массива класса
- 8. данный массив найти все комбинации элементов, которые дают сумму
- 9. Дают функции имя в R
- 10. Модели действительно нужны? какие преимущества они дают?
- 11. Позвольте пользователю выбрать, какие разрешения они дают?
- 12. Найти сумму массива subarrays
- 13. C Массивы дают адрес вместо значения при создании второго массива
- 14. Передача 2D массива в функции в C
- 15. Использование функции массива - C
- 16. изменение массива в функции c
- 17. выделение массива внутри функции c
- 18. Получить сумму php-массива
- 19. Python: Найти сумму массива
- 20. Функции перезапуска дают неожиданные результаты
- 21. Какие функции C++ можно поместить в указатель функции C?
- 22. Возвращаемые указатели от функции дают странные числа
- 23. Почему круглые функции C# и SQL round дают разные выходы?
- 24. Максимальное количество различных чисел, которые дают заданную сумму 'k'
- 25. Есть ли какие-либо функции сравнения массива Hive/udf's
- 26. Какие функции C не нужны в Cython?
- 27. Какие функции должен иметь профилировщик C# /. NET?
- 28. C++ #include (какие функции в чем)
- 29. Узнайте, какие функции имеет статическая библиотека C
- 30. C++ - Передача массива из функции к функции
возможно дубликат [Сумма последовательных элементов в массиве C++] (http://stackoverflow.com/questions/13108622/sum-of-consecutive-elements-in-an-array-c) –
@JeromeL Я довольно чертовски уверен, что это не дубликат (из этого конкретного Q, по крайней мере) –