如何求和 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+ 次檢視

開啟您的 職業生涯

完成課程獲得認證

開始學習
廣告