在C++ STL中的数组求和
使用C++中的accumulate函数,我们可以高效地找到数组的和()
一个称为数组的线性数据结构在连续的内存流中包含相同的数据类型元素。
数组中所有项的总和被称为数组的和。
在C++编程语言中有几种方法可以找到数组的和。
// C++ program to demonstrate working of accumulate()
#include
#include
using namespace std;
// User defined function that returns sum of
// arr[] using accumulate() library function.
int arraySum(int a[], int n)
{
int initial_sum = 0;
return accumulate(a, a+n, initial_sum);
}
int main()
{
int a[] = {5 , 10 , 15} ;
int n = sizeof(a)/sizeof(a[0]);
cout << arraySum(a, n);
return 0;
}
输出:
30
时间复杂度:O(n)
空间复杂度:O(n),其中n是数组的大小。
向量的总和
// C++ program to demonstrate working of accumulate()
#include
#include
#include
using namespace std;
// User defined function that returns sum of
// arr[] using accumulate() library function.
int arraySum(vector &v)
{
int initial_sum = 0;
return accumulate(v.begin(), v.end(), initial_sum);
}
int main()
{
vector v{5 , 10 , 15} ;
cout << arraySum(v);
return 0;
}
输出:
30
时间复杂度:O(n)
空间复杂度:O(n),其中 n 是数组的大小。
经典技巧
计算数组元素的和最简单的方法是通过遍历它们,并将每个元素的值加到 sum 变量中。
算法
步骤1:对于 i 从 0 到 n-1,执行步骤2;
步骤2:sum = sum + arr[i]
步骤3:打印 sum。
示例
Live Demo
#include
using namespace std;
int main (){
int arr[] = { 2, 5, 7, 8, 2, 6, 9 };
int n = 7, sum = 0;
for(int i = 0; i
输出:
The array sum is 39
使用accumulate方法
在C++中使用accumulate方法可以找到数组的总和。这个函数可以从C++的numeric库中访问。numeric>头文件需要在代码开头包含,以便使用这个方法,它包含了accumulate()函数的定义:
语法
accumulate(array_name , array_name+length , sum);
示例
在线演示
#include
#include
using namespace std;
int main (){
int arr[] = { 2, 5, 7, 8, 2, 6, 9 };
int n = 7, sum = 0;
sum = accumulate(arr, arr+n, sum);
cout<<"The array sum is "<
输出:
The array sum is 39
使用向量求和
你也可以在向量上使用累加函数。它将返回以向量形式表示的数组的和。
示例
实时演示
#include
#include
#include
using namespace std;
int arraySum(vector &v){
int initial_sum = 0;
return accumulate(v.begin(), v.end(), initial_sum);
}
int main(){
vector v{12, 56, 76, 2, 90 , 3} ;
int sum = 0;
sum=accumulate(v.begin(), v.end(), sum);
cout<<"The sum of array is "<
输出:
The sum of array is 239
使用for循环
我们可以使用for循环来遍历数组。所有的元素可以逐个相加:
初始化sum = 0。
运行一个for循环,从i = 0到i = size – 1。
在for循环的每一次迭代中,将sum和数组的当前元素相加,即sum = sum + arr[i]。
在for循环结束时,所有元素的和将存储在sum变量中。
#include
using namespace std;
int main() {
// initialise array
int arr[] = {2, 4, 6, 8};
int size = 4;
// initialise sum to zero
int sum = 0;
// for loop runs from 0 to size - 1
for(int i = 0; i < size; i++)
{
sum = sum + arr[i];
}
cout << "The sum of the elements in the array: " << sum;
}
输出:
The sum of the elements in the array: 20
使用valarray sum()函数
通过调用valarray类的成员函数sum,该函数可以直接在valarray对象上执行求和操作,而不是在普通数组上。