0 常用算术生成算法简介【accumulate、fill】
算法简介:
accumulate
:计算容器指定区间内元素的累和。
fill
:向容器填充指定元素。
注:算术生成算法属于小型算法,使用时需包含头文件
#include <numeric>
。
1 accumulate【计算容器元素的累和】
作用:计算容器指定区间内元素的累和。
注:使用
accumulate
算法时,需包含头文件include <numeric>
。
函数原型:
accumulate(iterator begin, iterator end, value);
参数解释:
begin
:迭代器起始位置;
end
:迭代器结束位置;
value
:起始累加值。
示例:
#include <iostream>
using namespace std;
#include <vector>
#include <numeric> //使用accumulate算法
#include <algorithm> //使用for_each算法
int main() {
vector<int> v;
v.push_back(9);
v.push_back(1);
v.push_back(7);
v.push_back(6);
v.push_back(3);
//计算元素累和(起始累加值设置为0)
int sum = accumulate(v.begin(), v.end(), 0);
cout << "sum = " << sum << endl; //26
return 0;
}
2 fill【向容器填充指定元素】
作用:向容器填充指定元素。
注:使用
fill
算法时,需包含头文件include <numeric>
。
函数原型:
fill(iterator begin, iterator end, value);
参数解释:
begin
:迭代器起始位置;
end
:迭代器结束位置;
value
:填充的指定值。
示例:
#include <iostream>
using namespace std;
#include <vector>
#include <numeric> //使用fill算法
#include <algorithm> //使用for_each算法
int main() {
vector<int> v;
v.resize(5); //使用默认值0填充
for_each(v.begin(), v.end(), [](int val) {cout << val << " "; }); //0 0 0 0 0
//fill():向容器中填充指定元素
fill(v.begin(), v.end(), 6);
for_each(v.begin(), v.end(), [](int val) {cout << val << " "; }); //6 6 6 6 6
return 0;
}