partial_sum
描述 (Description)
它用于计算范围的部分和,并分配给范围中的每个元素,从结果开始,范围[first,last]中相应元素的部分和。
声明 (Declaration)
以下是std :: partial_sum的声明。
C++98
template <class InputIterator, class OutputIterator>
OutputIterator partial_sum (InputIterator first, InputIterator last,
OutputIterator result);
template <class InputIterator, class OutputIterator, class BinaryOperation>
OutputIterator partial_sum (InputIterator first, InputIterator last,
OutputIterator result, BinaryOperation binary_op);
C++11
template <class InputIterator, class OutputIterator>
OutputIterator partial_sum (InputIterator first, InputIterator last,
OutputIterator result);
template <class InputIterator, class OutputIterator, class BinaryOperation>
OutputIterator partial_sum (InputIterator first, InputIterator last,
OutputIterator result, BinaryOperation binary_op);
first, last - 它迭代到序列中的初始和最终位置。
init - 它是累加器的初始值。
binary_op - 它是二进制操作。
binary_op2 - 它是二进制操作并采用两个元素。
返回值 (Return Value)
它返回一个指向已经存储结果元素的目标序列的最后一个元素的迭代器,或者如果[first,last]是一个空范围则返回结果。
异常 (Exceptions)
如果元素或迭代器上的任何操作抛出,它将抛出。
数据竞争 (Data races)
访问[first1,last1]范围内的元素。
例子 (Example)
在下面的示例中为std :: partial_sum。
#include <iostream>
#include <functional>
#include <numeric>
int myop (int x, int y) {return x+y+1;}
int main () {
int val[] = {10,20,30,40,50};
int result[5];
std::partial_sum (val, val+5, result);
std::cout << "Default partial_sum: ";
for (int i=0; i<5; i++) std::cout << result[i] << ' ';
std::cout << '\n';
std::partial_sum (val, val+5, result, std::multiplies<int>());
std::cout << "Functional operation multiplies: ";
for (int i=0; i<5; i++) std::cout << result[i] << ' ';
std::cout << '\n';
std::partial_sum (val, val+5, result, myop);
std::cout << "Custom function: ";
for (int i=0; i<5; i++) std::cout << result[i] << ' ';
std::cout << '\n';
return 0;
}
输出应该是这样的 -
Default partial_sum: 10 30 60 100 150
Functional operation multiplies: 10 200 6000 240000 12000000
Custom function: 10 31 62 103 154