如何求和 C++ 向量中的元素?


在本文中,我们将了解如何对 C++ 中的向量 中存在的元素求和。向量是一个 动态分配的、大小可变的数组。向量元素的和可以通过多种方式计算,我们将讨论两种这样的方法。

问题陈述

给定一个非空的整数向量,使用 C++ 中的多种方法计算向量所有元素的和。

示例

以下示例给出了一些测试用例的输入和输出

输入

vector vec={1,3,4,5,2,3}

输出

18

输入

vector vec={1,-1,-4,-5,2,3}

输出

-4

输入

vector vec={0}

输出

0

求向量元素和的方法

我们将讨论两种不同的方法来查找向量元素的和。这些方法如下:

使用 accumulate() 方法

第一种方法是使用 std::accumulate(),它在 <numeric> 头文件中定义。它将向量中指定的所有值累加到指定的和中。 accumulate() 函数接受三个参数:

  • 给定向量的第一个元素的迭代器。
  • 给定向量的最后一个元素的迭代器。
  • 和的初始值,在本例中为 0。

伪代码

使用 accumulate() 方法计算向量元素和所需步骤:

  1. 开始
  2. 声明 v 为向量类型。
  3. 以数组模式将一些值初始化到 v 向量中。
  4. 打印“所有元素的和是:”。
  5. 调用 accumulate(v.begin(),v.end(),0) 计算 v 向量所有值的和。
  6. 打印和的结果。
  7. 结束

示例

以下代码用于使用 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 中。

伪代码

使用迭代方法计算向量元素和所需步骤:

  1. 开始
  2. 声明 int 数据类型的 v 向量和 int 类型的变量 sum。
  3. 初始化 sum=0,并根据问题陈述将一些值放入 v 向量中。
  4. 打印“所有元素的和是:”。
  5. 使用 auto 迭代器 迭代向量。
  6. 在每次迭代中,将迭代器的值添加到 sum 变量。
  7. 输出 sum 变量的值。
  8. 结束

示例

以下代码用于使用迭代方法计算向量元素的和。

#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),因为我们没有使用额外的空间来存储元素。

更新于:2024年8月1日

23K+ 次查看

开启您的 职业生涯

完成课程获得认证

开始学习
广告