1.算法简介
算术生成算法属于小型算法,使用时包含的头文件为 #include <numeric>
1).accumulate //计算容器元素累积总和
2).fill //向容器中添加元素
1.1 accumulate生成算法
1).计算区间内 容器元素累加总和。
2). 函数原型:accumulate(iterator beg, iterator end, value);
计算容器元素累加总和
beg 开始迭代器
end 结束迭代器
value 起始值
3).accumulate使用时,头文件注意是numeric,这个算法很实用。
#include<iostream>
using namespace std;
#include<vector>
#include<numeric>
void test01()
{
vector<int>v1;
for (int i = 0; i <= 100; i++)
{
v1.push_back(i);
}
int total1 = accumulate(v1.begin(), v1.end(), 0); //起始累加值为0
int total2 = accumulate(v1.begin(), v1.end(), 10000); //5050加上10000
cout << "total1 = " << total1 << endl;
cout << "total2 = " << total2 << endl;
}
int main()
{
test01();
system("pause");
return 0;
}
运行结果:
total1 = 5050
total2 = 15050
请按任意键继续. . .
1.2 fill生成算法
1.功能描述:向容器中填充指定的元素。
2.函数原型:fill(iterator beg, iterator end, value);
向容器中填充元素
beg 开始迭代器
end 结束迭代器
value 填充的值
3.利用fill可以将容器区间内元素填充为指定值。
#include<iostream>
using namespace std;
#include<vector>
#include<numeric>
#include<algorithm>
void myPrint(int val)
{
cout << val << " ";
}
void test01()
{
vector<int>v1;
v1.resize(10);
for_each(v1.begin(), v1.end(), myPrint);
cout << endl;
//后期重新填充
fill(v1.begin(), v1.end(), 100);
for_each(v1.begin(), v1.end(), myPrint);
cout << endl;
}
int main()
{
test01();
system("pause");
return 0;
}
运行结果:
0 0 0 0 0 0 0 0 0 0
100 100 100 100 100 100 100 100 100 100
请按任意键继续. . .