🤔常用算数生成算法:
该算法函数需要调用<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);}
运行结果: