如何求和 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),因為我們沒有使用額外的空間來儲存元素。
廣告