C++ 函数:accumulate()

该算法函数在numeric头文件中定义:#include<numeric>
目前知道的有几个功能:1.求和;2.求连乘; 3.string合并

直接举例说明:

#include<iostream>
#include<numeric>//accumulate函数在这个库中定义
#include<string>//包含这个库,可以直接输出字符串
#include<vector>//vector是向量类型,可容纳许多类型的数据,因此也被称为容器
using namespace std;
int main() {
//功能一:求和
 int list[10] = { 1,2,3,4,5,6,7,8,9,10 };
 int sum= accumulate(list, list+10, 0) ;
 cout <<"和:"<<sum<<endl;
 //功能二:求连乘积
 int  con_product  = accumulate(list, list + 3, 1, multiplies<int>());
 cout<<"连乘积:"<<con_product<<endl;
 //功能三:string合并
 vector<string>a{"1","-2345","+6"};
 string a_sum=accumulate(a.begin(), a.end(),string("out: "));
cout<<"string合并后输出:"<<a_sum<<endl;
 return 0;
}

求和时,accumulate带有三个形参:累加的元素起始地址;累加的元素结束地址,累加的初值(通常为0)。例如:
sum= accumulate(list, list+10, 0) ;得出sum=55.
如果sum= accumulate(list, list+3, 0) ;得出sum=6.
如果sum= accumulate(list, list+3, 100) ;得出sum=106.

求连乘积时,accumulate带有四个形参:连乘的元素起始地址;连乘的元素结束地址,连乘的初值(通常为1)。例如:
con_product= accumulate(list, list+3, 1, multiplies<int>()) ;得出sum=6.
如果con_product= accumulate(list, list+3, 10, multiplies<int>()) ;得出sum=60.
求string合并
string a_sum=accumulate(a.begin(), a.end(),string("out: "));得到out: 1-2345+6

`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` 分别用于计算元素的最大值和最小值。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值