Accumulate C: Накопление навыков программирования на языке C
Функция accumulate() - это функция из стандартной библиотеки языка C++, которая используется для последовательного суммирования элементов в контейнере (массив, список, вектор и так далее).
Прототип функции accumulate() выглядит следующим образом:
template
T accumulate(InputIterator first, InputIterator last, T init);
Функция принимает три аргумента:
1. first - итератор, указывающий на начало контейнера.
2. last - итератор, указывающий на конец контейнера.
3. init - начальное значение, которое будет использоваться для суммирования элементов.
Пример использования функции accumulate() для суммирования элементов массива:
#include
#include
int main() {
int arr[] = {1, 2, 3, 4, 5};
int sum = std::accumulate(arr, arr + 5, 0);
std::cout << "Sum of elements in array: " << sum << std::endl;
return 0;
}
В данном примере мы создаем массив из пяти элементов, инициализируем его значениями 1, 2, 3, 4 и 5, и затем используем функцию accumulate() для суммирования элементов. При вызове функции мы передаем ей указатель на начало массива (arr), указатель на элемент, следующий за последним элементом массива (arr + 5), и начальное значение равное 0. Результатом выполнения функции будет сумма всех элементов массива (1 + 2 + 3 + 4 + 5 = 15), которую мы выводим на экран.
Также функция accumulate() может быть использована с пользовательским типом данных, если для данного типа данных определен оператор сложения.
Например, если у нас есть класс Point, представляющий точку на плоскости, и для класса определен оператор сложения, то мы можем использовать функцию accumulate() для суммирования всех точек в векторе:
#include
#include
#include
class Point {
public:
int x, y;
Point() : x(0), y(0) {}
Point(int x, int y) : x(x), y(y) {}
Point operator+(const Point& rhs) const { return Point(x + rhs.x, y + rhs.y); }
};
int main() {
std::vector
Point sum = std::accumulate(vec.begin(), vec.end(), Point());
std::cout << "Sum of points in vector: (" << sum.x << ", " << sum.y << ")" << std::endl;
return 0;
}
В этом примере мы создаем вектор из трех точек и используем функцию accumulate() для их суммирования. При вызове функции мы передаем ей итераторы, указывающие на начало и конец вектора, и объект Point(), который используется в качестве начального значения. Результатом выполнения функции будет сумма всех точек в векторе (1+3+5=9, 2+4+6=12), которую мы выводим на экран.