【C++】STL 算法 - 累加填充算法 ( 元素累加算法 - accumulate 函数 | 元素填充算法 - fill 函数 )

2024-01-18 10:20

本文主要是介绍【C++】STL 算法 - 累加填充算法 ( 元素累加算法 - accumulate 函数 | 元素填充算法 - fill 函数 ),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 一、元素累加算法 - 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
请按任意键继续. . .

在这里插入图片描述

这篇关于【C++】STL 算法 - 累加填充算法 ( 元素累加算法 - accumulate 函数 | 元素填充算法 - fill 函数 )的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/618740

相关文章

全面掌握 SQL 中的 DATEDIFF函数及用法最佳实践

《全面掌握SQL中的DATEDIFF函数及用法最佳实践》本文解析DATEDIFF在不同数据库中的差异,强调其边界计算原理,探讨应用场景及陷阱,推荐根据需求选择TIMESTAMPDIFF或inte... 目录1. 核心概念:DATEDIFF 究竟在计算什么?2. 主流数据库中的 DATEDIFF 实现2.1

MySQL中的LENGTH()函数用法详解与实例分析

《MySQL中的LENGTH()函数用法详解与实例分析》MySQLLENGTH()函数用于计算字符串的字节长度,区别于CHAR_LENGTH()的字符长度,适用于多字节字符集(如UTF-8)的数据验证... 目录1. LENGTH()函数的基本语法2. LENGTH()函数的返回值2.1 示例1:计算字符串

c++ 类成员变量默认初始值的实现

《c++类成员变量默认初始值的实现》本文主要介绍了c++类成员变量默认初始值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录C++类成员变量初始化c++类的变量的初始化在C++中,如果使用类成员变量时未给定其初始值,那么它将被

C++中NULL与nullptr的区别小结

《C++中NULL与nullptr的区别小结》本文介绍了C++编程中NULL与nullptr的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编... 目录C++98空值——NULLC++11空值——nullptr区别对比示例 C++98空值——NUL

C++ Log4cpp跨平台日志库的使用小结

《C++Log4cpp跨平台日志库的使用小结》Log4cpp是c++类库,本文详细介绍了C++日志库log4cpp的使用方法,及设置日志输出格式和优先级,具有一定的参考价值,感兴趣的可以了解一下... 目录一、介绍1. log4cpp的日志方式2.设置日志输出的格式3. 设置日志的输出优先级二、Window

MySQL 中的 CAST 函数详解及常见用法

《MySQL中的CAST函数详解及常见用法》CAST函数是MySQL中用于数据类型转换的重要函数,它允许你将一个值从一种数据类型转换为另一种数据类型,本文给大家介绍MySQL中的CAST... 目录mysql 中的 CAST 函数详解一、基本语法二、支持的数据类型三、常见用法示例1. 字符串转数字2. 数字

Python内置函数之classmethod函数使用详解

《Python内置函数之classmethod函数使用详解》:本文主要介绍Python内置函数之classmethod函数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 类方法定义与基本语法2. 类方法 vs 实例方法 vs 静态方法3. 核心特性与用法(1编程客

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

Python函数作用域示例详解

《Python函数作用域示例详解》本文介绍了Python中的LEGB作用域规则,详细解析了变量查找的四个层级,通过具体代码示例,展示了各层级的变量访问规则和特性,对python函数作用域相关知识感兴趣... 目录一、LEGB 规则二、作用域实例2.1 局部作用域(Local)2.2 闭包作用域(Enclos

Java中的雪花算法Snowflake解析与实践技巧

《Java中的雪花算法Snowflake解析与实践技巧》本文解析了雪花算法的原理、Java实现及生产实践,涵盖ID结构、位运算技巧、时钟回拨处理、WorkerId分配等关键点,并探讨了百度UidGen... 目录一、雪花算法核心原理1.1 算法起源1.2 ID结构详解1.3 核心特性二、Java实现解析2.