文章目录
- 一、元素累加算法 - accumulate 函数
- 1、函数原型分析
- 2、代码示例
- 二、元素填充算法 - fill 函数
- 1、函数原型分析
- 2、代码示例
一、元素累加算法 - accumulate 函数
1、函数原型分析
在 C++ 语言 的 标准模板库 ( STL , STL Standard Template Library ) 中 , 提供了 accumulate 元素累加算法函数 用于 将 一个容器中的元素 进行累加操作 ;
accumulate 元素累加函数 将 输入容器 的 [ 起始迭代器, 终止迭代器 ) 范围 内的 元素 在一个基础值 的 基础上 进行累加 , 得到一个累加值 ;
最终 accumulate 函数 返回最终累加后的值 ;
accumulate 元素累加算法 函数原型 如下 :
template <class InputIterator, class T>
T accumulate(InputIterator first, InputIterator last, T init);
- 参数解析 :
- InputIterator first 参数 : 输入容器 ( 被复制容器 ) 的 迭代器范围 的 起始迭代器 ( 包含该迭代器指向的元素 ) ;
- InputIterator last 参数 : 输入容器 ( 被复制容器 ) 的 迭代器范围 的 终止迭代器 ( 不包含该迭代器指向的元素 ) ;
- T init 参数 : 累加的初始值 , 该值与 容器中的元素类型一致 ;
- 返回值解析 : T 类型 是 容器元素类型 , 返回的是最终的累加值 ;
代码示例 :
// 输入容器vector<int> source{ 9, 5, 2, 7 };// 将容器中的值累加int acc = accumulate(source.begin(), source.end(), 0);
2、代码示例
代码示例 :
#include "iostream"
using namespace std;
#include <vector>
#include <algorithm>
#include "functional"// accumulate 函数定义在这个头文件中
#include <numeric>int main() {// 输入容器vector<int> source{ 9, 5, 2, 7 };// 将容器中的值累加int acc = accumulate(source.begin(), source.end(), 0);// 遍历打印容器中元素内容for_each(source.begin(), source.end(), [](int a) {cout << a << " ";});cout << endl;cout << "acc = " << acc << endl;// 控制台暂停 , 按任意键继续向后执行system("pause");return 0;
};
执行结果 :
9 5 2 7
acc = 23
请按任意键继续. . .
二、元素填充算法 - fill 函数
1、函数原型分析
在 C++ 语言 的 标准模板库 ( STL , STL Standard Template Library ) 中 , 提供了 fill 元素填充算法函数 用于 将 一个容器中的 指定范围的元素 修改为指定值 ;
fill 元素填充函数 将 输入容器 的 [ 起始迭代器, 终止迭代器 ) 范围 内的 元素 修改为指定值 ;
fill 元素填充算法 函数原型 如下 :
template <class ForwardIterator, class T>
void fill(ForwardIterator first, ForwardIterator last, const T& value);
- 参数解析 :
- ForwardIterator first 参数 : 输入容器 ( 被复制容器 ) 的 迭代器范围 的 起始迭代器 ( 包含该迭代器指向的元素 ) ;
- ForwardIterator last 参数 : 输入容器 ( 被复制容器 ) 的 迭代器范围 的 终止迭代器 ( 不包含该迭代器指向的元素 ) ;
- const T& value 参数 : 要求改的值
- 返回值解析 : void 类型返回值 ;
代码示例 :
// 输入容器vector<int> source{ 9, 5, 2, 7 };// 将容器中的值都填充为 888fill(source.begin(), source.end(), 888);
2、代码示例
代码示例 :
#include "iostream"
using namespace std;
#include <vector>
#include <algorithm>
#include "functional"// accumulate 函数定义在这个头文件中
#include <numeric>int main() {// 输入容器vector<int> source{ 9, 5, 2, 7 };// 遍历打印容器中元素内容for_each(source.begin(), source.end(), [](int a) {cout << a << " ";});cout << endl;// 将容器中的值都填充为 888fill(source.begin(), source.end(), 888);// 遍历打印容器中元素内容for_each(source.begin(), source.end(), [](int a) {cout << a << " ";});cout << endl;// 控制台暂停 , 按任意键继续向后执行system("pause");return 0;
};
执行结果 :
9 5 2 7
888 888 888 888
请按任意键继续. . .