C++ STL常用算法-66-算数算法-accumulate和fill

这篇来学习两个数学算法算法,这两个算法在头文件numeric中,属于小众算法,其实我们大部分使用的算法都包含在头文件algorithm中。

算法简介

accumulate  //计算容器元素累计总和
fill      //向容器中添加元素

 

1.accumulate 

作用:计算区间内元素的总和

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

参数解释:参数3是一个起始叠加值,一般设置为0.

#include 
#include 
#include 
#include 
using namespace std;


void test01()
{
    vector v;
    for(int i=0; i <=100; i++)
    {
        v.push_back(i);
    }

    // accumulate, 累计容器内元素求和算法
    int total = accumulate(v.begin(), v.end(), 0);
    cout << "Total = " << total << endl;

    // 参数3,起止累加值为100
    int total2 = accumulate(v.begin(), v.end(), 100);
    cout << "Total2 = " << total2 << endl;
}

int main()
{
    test01();
    system("pause");
    return 0;
}

代码运行结果:

C++ STL常用算法-66-算数算法-accumulate和fill_第1张图片

 

2.fill 算法

作用:fill英文单词是填充的意思,这个算法是指定区间内的元素填充为想要的数据,例如下面参数3 value

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

#include 
#include 
#include 
#include 
#include 
using namespace std;


void Print01(int val)
{
    cout << val << " ";
}

void test01()
{
    vector v;
    v.resize(10);

    //10个元素值默认是0
    for_each(v.begin(), v.end(), Print01);
    cout << endl;

    // fill 填充元素,例如把0全部填充为100
    fill(v.begin(), v.end(), 100);
    for_each(v.begin(), v.end(), Print01);
    cout << endl;

}

int main()
{
    test01();
    system("pause");
    return 0;
}

代码运行结果:

C++ STL常用算法-66-算数算法-accumulate和fill_第2张图片

 

你可能感兴趣的:(C++学习笔记)