std::accumulate
Актуально для C++23.
#include <algorithm>
Актуально на 2024-02-12.
Define overload #1
template<class InputIterator, class T> constexpr inline T accumulate(InputIterator first, InputIterator last, T init);
Аккумулирует в init каждое значение из диапазона [first, last] с помощью оператора "+".
Вернёт init.
Example, possible implementation
Define overload #2
template<class InputIterator, class T, class BinaryOperation> constexpr inline T accumulate(InputIterator first, InputIterator last, T init, BinaryOperation binary_op);
Применяет бинарный предикат binary_op к init и [first, last] переместив значение в init.
Вернёт init.
Example, possible implementation
Examples
Example 1:
#include <iostream>
#include <numeric>
int main()
{
auto list = {1,2,3,4,5}; // сумма элементов: 15
auto res = std::accumulate(std::begin(list), std::end(list), 5);
std::cout << "accumulate: " << res << std::endl; // print 20
return 0;
}
accumulate: 20
Example 2:
#include <iostream>
#include <numeric>
int main()
{
const auto pred = [](auto init, auto el)
{
init += " ";
init += std::to_string(el);
return init;
};
std::string str("init string:");
auto list = {1, 2, 3, 4, 5};
auto res = std::accumulate(std::begin(list), std::end(list), std::move(str), pred);
std::cout << res << std::endl;
return 0;
}
init string: 1 2 3 4 5
See also
TODO
This page was last modified on 2024-02-12