accumulate函數是C++ numeric庫中的一個函數,主要用來對指定范圍內元素求和,但也自行指定一些其他操作,如范圍內所有元素相乘、相除等。
使用前需要引用頭文件:
#include <numeric>
- 函數共有四個參數,其中前三個為必須,第四個為非必需。
- 若不指定第四個參數,則默認對范圍內的元素進行累加操作。
計算數組中所有元素的和:
vector<int> arr{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};int sum = accumulate(arr.begin(), arr.end(), 0); // 初值0 + (1 + 2 + 3 + 4 +... + 10)cout << sum << endl; // 輸出55
例題:最富有客戶的資產總量
遍歷即可。
class Solution {
public:int maximumWealth(vector<vector<int>>& accounts) {int maxWealth = INT_MIN;for (auto &account : accounts) {maxWealth = max(maxWealth, accumulate(account.begin(), account.end(), 0));}return maxWealth;}
};
注:
INT_MIN和INT_MAX定義在#include <climits>
中,且INT_MAX為 2 31 ? 1 2^{31}-1 231?1 ,即 2147483647 2147483647 2147483647 ; INT_MIN為 ? 2 31 -2^{31} ?231 即 2147483648 2147483648 2147483648。
更多請參考:C++ accumulate函數介紹、具體案例