如何求和 C++ 向量中的元素?
在本文中,我们将了解如何对 C++ 中的向量 中存在的元素求和。向量是一个 动态分配的、大小可变的数组。向量元素的和可以通过多种方式计算,我们将讨论两种这样的方法。
问题陈述
给定一个非空的整数向量,使用 C++ 中的多种方法计算向量所有元素的和。
示例
以下示例给出了一些测试用例的输入和输出
输入
vectorvec={1,3,4,5,2,3}
输出
18
输入
vectorvec={1,-1,-4,-5,2,3}
输出
-4
输入
vectorvec={0}
输出
0
求向量元素和的方法
我们将讨论两种不同的方法来查找向量元素的和。这些方法如下:
使用 accumulate() 方法
第一种方法是使用 std::accumulate(),它在 <numeric> 头文件中定义。它将向量中指定的所有值累加到指定的和中。 accumulate() 函数接受三个参数:
- 给定向量的第一个元素的迭代器。
- 给定向量的最后一个元素的迭代器。
- 和的初始值,在本例中为 0。
伪代码
使用 accumulate() 方法计算向量元素和所需步骤:
- 开始
- 声明 v 为向量类型。
- 以数组模式将一些值初始化到 v 向量中。
- 打印“所有元素的和是:”。
- 调用 accumulate(v.begin(),v.end(),0) 计算 v 向量所有值的和。
- 打印和的结果。
- 结束
示例
以下代码用于使用 accumulate() 方法计算向量元素的和。
#include<iostream> #include<vector> #include<numeric> using namespace std; int main() { vector<int> v = {2,7,6,10}; //vector v is given to us cout<<"Sum of all the elements is : "<<endl; cout<<accumulate(v.begin(),v.end(),0); //using accumulate method }
输出
Sum of all the elements is: 25
时间和空间复杂度
以上代码的 时间复杂度 为 O(N),其中 N 是向量中的元素个数。
以上代码的 空间复杂度 是常数或 O(1),因为我们没有使用额外的空间来存储元素。
使用迭代方法
我们还可以迭代整个向量并计算总和。首先,我们必须声明一个初始化为 0 的变量 sum。然后,当我们迭代向量时,我们将向量的每个元素依次添加到 sum 中。
伪代码
使用迭代方法计算向量元素和所需步骤:
- 开始
- 声明 int 数据类型的 v 向量和 int 类型的变量 sum。
- 初始化 sum=0,并根据问题陈述将一些值放入 v 向量中。
- 打印“所有元素的和是:”。
- 使用 auto 迭代器 迭代向量。
- 在每次迭代中,将迭代器的值添加到 sum 变量。
- 输出 sum 变量的值。
- 结束
示例
以下代码用于使用迭代方法计算向量元素的和。
#include<iostream> #include<vector> #include<numeric> using namespace std; int main() { vector<int> v = {2,7,6,10}; //vector v is given to us int sum=0; cout<<"Sum of all the elements is : "<<endl; for(auto& itr:v){ sum+=itr; } cout<<sum<<endl; }
输出
Sum of all the elements is: 25
时间和空间复杂度
以上代码的 时间复杂度 为 O(N),其中 N 是向量中的元素个数。
以上代码的 空间复杂度 是常数或 O(1),因为我们没有使用额外的空间来存储元素。
广告