std::accumulate
时间: 2023-03-23 14:03:03 浏览: 108
`std::accumulate` 是C++ STL 中的一个算法函数,它的作用是计算给定范围内的元素的累加和。它的函数原型如下:
```cpp
template <class InputIterator, class T>
T accumulate (InputIterator first, InputIterator last, T init);
```
其中:
- `first` 和 `last` 是输入范围的迭代器,表示要计算累加和的元素范围。
- `init` 是累加和的初始值。
`std::accumulate` 的工作方式是将累加和的初始值(即 `init`)加上范围内的每个元素,然后返回最终的累加和。
例如,以下代码演示了如何使用 `std::accumulate` 计算 `std::vector<int>` 中的元素之和:
```cpp
#include <iostream>
#include <numeric>
#include <vector>
int main() {
std::vector<int> v {1, 2, 3, 4, 5};
int sum = std::accumulate(v.begin(), v.end(), 0);
std::cout << "The sum is " << sum << std::endl;
return 0;
}
```
输出结果为:
```
The sum is 15
```
在这个例子中,`v.begin()` 和 `v.end()` 分别表示 `std::vector<int>` 的第一个和最后一个元素的迭代器。`0` 是累加和的初始值。`std::accumulate` 计算了 `1 + 2 + 3 + 4 + 5` 的结果,即 `15`,并将其存储在 `sum` 变量中。
除了计算元素的累加和,`std::accumulate` 还可以用于计算其他类型的累积操作,例如乘积、最大值、最小值等等。这可以通过提供不同的二元操作函数来实现,例如 `std::multiplies` 用于计算元素的乘积,`std::max` 和 `std::min` 分别用于计算元素的最大值和最小值。