C++ accumulate函數(shù)詳細(xì)介紹和具體案例
一、函數(shù)簡(jiǎn)單介紹
accumulate是numeric庫(kù)中的一個(gè)函數(shù),主要用來(lái)對(duì)指定范圍內(nèi)元素求和,但也自行指定一些其他操作,如范圍內(nèi)所有元素相乘、相除等。
使用前需要引入相應(yīng)的頭文件。
#include <numeric>
- 函數(shù)共有四個(gè)參數(shù),其中前三個(gè)為必須,第四個(gè)為非必需。
- 若不指定第四個(gè)參數(shù),則默認(rèn)對(duì)范圍內(nèi)的元素進(jìn)行累加操作。
accumulate(起始迭代器, 結(jié)束迭代器, 初始值, 自定義操作函數(shù))
二、具體使用場(chǎng)景
1. 計(jì)算數(shù)組中所有元素的和
#include <iostream>
#include <vector>
#include <numeric>
using namespace std;
int main() {
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
return 0;
}2. 計(jì)算數(shù)組中所有元素的乘積
需要指定第四個(gè)參數(shù),這里使用的是乘法函數(shù) multiplies<type>(), type根據(jù)元素的類型選擇。
#include <iostream>
#include <vector>
#include <numeric>
using namespace std;
int main() {
vector<int> arr{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int sum = accumulate(arr.begin(), arr.end(), 1, multiplies<int>()); // 初值1 * (1 * 2 * 3 * 4 *... * 10)
cout << sum << endl; // 輸出3628800
return 0;
}3. 計(jì)算數(shù)組中每個(gè)元素乘以3之后的和
#include <iostream>
#include <vector>
#include <numeric>
using namespace std;
int fun(int acc, int num) {
return acc + num * 3; // 計(jì)算數(shù)組中每個(gè)元素乘以3
}
int main() {
vector<int> arr{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int sum = accumulate(arr.begin(), arr.end(), 0, fun);
cout << sum << endl; // 輸出 165
return 0;
}4.計(jì)算數(shù)組中每個(gè)元素減去3之后的和
#include <iostream>
#include <vector>
#include <numeric>
using namespace std;
int fun(int acc, int num) {
return acc + (num - 3) ; // 計(jì)算數(shù)組中每個(gè)元素減去3之后的和
}
int main() {
vector<int> arr{1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int sum = accumulate(arr.begin(), arr.end(), 0, fun);
cout << sum << endl; // 輸出25
return 0;
}5.計(jì)算班級(jí)內(nèi)學(xué)生的平均分
#include <iostream>
#include <vector>
#include <numeric>
using namespace std;
struct Student {
string name;
int score;
Student() {}; // 無(wú)參構(gòu)造函數(shù)
Student(string name, int score) : name(name), score(score) {}; // 有參構(gòu)造函數(shù)
};
int fun(int acc, Student b) {
return a + b.score;
}
int main() {
vector<Student> arr;
arr.emplace_back("Alice", 82);
arr.emplace_back("Bob", 91);
arr.emplace_back("Lucy", 85);
arr.emplace_back("Anna", 60);
arr.emplace_back("June", 73);
int avg_score = accumulate(arr.begin(), arr.end(), 0, fun) / arr.size(); // 總分/學(xué)生數(shù)
cout << avg_score << endl;
return 0;
}6.拼接字符串
C++中字符串之間也可以使用
+,即拼接兩個(gè)字符串。
#include <iostream>
#include <vector>
#include <numeric>
using namespace std;
int main() {
vector<string> words{"this ", "is ", "a ", "sentence!"};
string init, res;
res = accumulate(words.begin(), words.end(), init); // 連接字符串
cout << res << endl; // this is a sentence!
return 0;
}到此這篇關(guān)于C++ accumulate函數(shù)詳細(xì)介紹和具體案例的文章就介紹到這了,更多相關(guān)C++ accumulate函數(shù) 內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語(yǔ)言用指針函數(shù)尋找數(shù)組中的最大值與次大值
這篇文章主要給大家介紹了關(guān)于C語(yǔ)言用指針函數(shù)尋找數(shù)組中的最大值與次大值的相關(guān)資料,該代碼通過(guò)定義一個(gè)名為L(zhǎng)argestTow的函數(shù)來(lái)找出數(shù)組中的最大值和次大值,并將結(jié)果分別存入指針?biāo)赶虻膬?nèi)存單元中,需要的朋友可以參考下2024-11-11
C++中的類型查詢之探索typeid和type_info(推薦)
C++ 是一種靜態(tài)類型語(yǔ)言,這意味著每個(gè)變量的類型在編譯時(shí)就已經(jīng)確定,在這篇技術(shù)分享中,我們將探討 C++ 中的 typeid 和 type_info,以及如何使用它們來(lái)獲取類型信息,需要的朋友可以參考下2024-05-05
C語(yǔ)言中快速排序和插入排序優(yōu)化的實(shí)現(xiàn)
這篇文章主要介紹了C語(yǔ)言中快速排序和插入排序優(yōu)化的實(shí)現(xiàn),包括雙向劃分快速排序方法的介紹,需要的朋友可以參考下2015-11-11
嵌入式C語(yǔ)言二級(jí)指針在鏈表中的應(yīng)用
這篇文章主要為大家介紹了嵌入式C語(yǔ)言二級(jí)指針在鏈表中的應(yīng)用,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04
vsCode配置import@路徑提示的實(shí)現(xiàn)步驟
在導(dǎo)入文件設(shè)置路徑的時(shí)候方便了很多,本文主要介紹了vsCode配置import@路徑提示的實(shí)現(xiàn)步驟,具有一定的參考價(jià)值,感興趣的可以了解一下2023-08-08
C語(yǔ)言簡(jiǎn)明分析選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的使用
C語(yǔ)言條件控制語(yǔ)句選擇結(jié)構(gòu),是屬于計(jì)算機(jī)的語(yǔ)言編輯,有在C語(yǔ)言條件控制中的語(yǔ)句選擇結(jié)構(gòu)的存在,即是C語(yǔ)言條件控制語(yǔ)句選擇結(jié)構(gòu),循環(huán)控制語(yǔ)句是一個(gè)基于C語(yǔ)言的編程語(yǔ)句,該語(yǔ)句主要有while循環(huán)語(yǔ)句、do-while循環(huán)語(yǔ)句和for循環(huán)語(yǔ)句來(lái)實(shí)現(xiàn)循環(huán)結(jié)構(gòu)2022-04-04
用c語(yǔ)言實(shí)現(xiàn)和平精英的完整代碼
這篇文章主要介紹了用c語(yǔ)言實(shí)現(xiàn)和平精英的完整代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04
Qt Creator + CMake 構(gòu)建教程的方法步驟
本文主要介紹了Qt Creator + CMake 構(gòu)建教程的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02

