C++系列内容的学习目录                                 →                            \rightarrow                 →​ ​​C++学习系列内容汇总​​。



5. 常用算术生成算法

  学习目标: 掌握常用的算术生成算法。

  注意: 算术生成算法属于小型算法,使用时包含的头文件为 ​​#include​​。

  算法简介:

  • ​accumulate​​    // 计算容器元素累计总和
  • ​fill​​    // 向容器中填充指定的元素

5.1 accumulate

  功能描述: 计算区间内的容器元素累计总和。

  函数原型:​accumulate(iterator beg, iterator end, value);​

        // 计算容器元素累计总和

        // beg 开始迭代器

        // end 结束迭代器

        // value 起始值

  实例如下所示。

#includeusing namespace std;#include#include//常用算术生成算法:accumulatevoid test01(){
vector<int>v;

for (int i = 0; i <= 100; i++)
{
v.push_back(i);
}
int total = accumulate(v.begin(), v.end(), 0); //参数3:起始累加值(如果为0,total = 5050;如果为1000,total = 6050)

cout << "total = " << total << endl;}int main(){
test01();

system("pause");

return 0;}

total = 5050

  总结: accumulate使用时头文件注意是numeric,这个算法很实用。

5.2 fill

  功能描述: 向容器中填充指定的元素。

  函数原型:​fill(iterator beg, iterator end, value);​

        // 向容器中填充元素

        // beg 开始迭代器

        // end 结束迭代器

        // value 填充的值

  实例如下所示。

#includeusing namespace std;#include#include#include//常用算术生成算法:fillvoid myPrint(int val){
cout << val << " ";}void test01(){
vector<int>v;
v.resize(10); //系统会默认填充0
cout << "利用fill填充前:" << endl;
for_each(v.begin(), v.end(), myPrint);
cout << endl;

//利用fill后期重新向容器中填充指定的元素
fill(v.begin(), v.end(), 100);

cout << "利用fill填充后:" << endl;
for_each(v.begin(), v.end(), myPrint);
cout << endl;}int main(){
test01();

system("pause");

return 0;}

利用fill填充前:

0 0 0 0 0 0 0 0 0 0

利用fill填充后:

100 100 100 100 100 100 100 100 100 100

  总结: 利用 fill 可以将容器区间内元素填充为指定的值。