🤔常用算数生成算法:
该算法函数需要调用<numeric>头文件
1.accumulate 计算总和
在 C++ STL 中,accumulate()
是一种常用的算法,用于计算指定范围内的元素之和。
accumulate()
的函数原型为:
template<class InputIt, class T>
T accumulate(InputIt first, InputIt last, T init);
📖其中,first
和 last
分别表示需要求和的序列的起始位置和结束位置;init
则表示求和的初始值,可以省略,如果省略则以 *first
作为初始值。
代码示例:
#include<iostream>
using namespace std;
#include<vector>
#include<numeric>
int main()
{
vector<int>d1;
for (int i = 0; i <= 100; i++)
{
d1.push_back(i);
}
int total=accumulate(d1.begin(), d1.end(), 0);
//最后一个数字是起始值
cout << "容器内值累加为:" << total;
}
运行结果:
2.fill 替换区间
在 C++ STL 中,fill()
是一种常用的算法,用于将指定范围内的元素设置为指定的值。
fill()
的函数原型为:
template<class ForwardIt, class T>
void fill(ForwardIt first, ForwardIt last, const T& value);
📖其中,first
和 last
分别表示需要设置值的序列的起始位置和结束位置;value
表示需要设置的值。
📖fill()
函数将输入范围 first
至 last-1
中的每个元素都设置为 value
,可以是基本类型或类类型对象。
代码示例:
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
void print(int val)
{
cout << val << " ";
}
int main()
{
vector<int>d1;
vector<int>d2;
d1.push_back(10);
d1.push_back(20);
d1.push_back(30);
d1.push_back(40);
d1.push_back(20);
d1.push_back(20);
d1.push_back(30);
d1.push_back(20);
d2.push_back(100);
cout << "填充前";
for_each(d1.begin(), d1.end(), print);
cout << endl;
cout << "填充后:";
fill(d1.begin(), d1.end(), 200);
for_each(d1.begin(), d1.end(), print);
}
运行结果: