【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 };

	// 将容器中的值都填充为 888
	fill(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;

	// 将容器中的值都填充为 888
	fill(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
请按任意键继续. . .

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/330947.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Unity3D代码混淆方案详解

背景 Unity引擎使用Mono运行时&#xff0c;而C#语言易受反编译影响&#xff0c;存在代码泄露风险。本文通过《QQ乐团》项目实践&#xff0c;提出一种适用于Unity引擎的代码混淆方案&#xff0c;以保护代码逻辑。 引言 在Unity引擎下&#xff0c;为了防止代码被轻易反编译&a…

AVL树 -- C++实现

AVL树 – C实现 1. AVL树的概念 二叉搜索树虽可以缩短查找的效率&#xff0c;但如果数据有序或接近有序二叉搜索树将退化为单支树&#xff0c;查找元素相当于在顺序表中搜索元素&#xff0c;效率低下。因此&#xff0c;两位俄罗斯的数学家G.M.Adelson-Velskii和E.M.Landis在1…

组件v-model(.sync)记录使用(vue3)

示例&#xff08;演示地址&#xff09; 以下是Vue3中使用v-model实现组件的双向数据绑定的示例代码&#xff1a; 首先&#xff0c;让我们来了解一下Vue3中v-model的用法。在Vue3中&#xff0c;v-model 指令可以用于自定义组件上&#xff0c;用于实现组件的双向数据绑定。与Vue2…

为什么选择HelpLook而不是Document360:知识库工具分析

在现今的信息化时代&#xff0c;企业们越来越倾向于使用知识库工具来收集、组织和分享他们的知识资源。HelpLook和Document360是市面上两款不错的知识库管理工具。那如果非要在他们之中选一个&#xff0c;还是建议HelpLook。以下是一些对比分析&#xff0c;希望可以给大家提供参…

Python通过HTTP代理进行数据传输

在Python中&#xff0c;HTTP代理是一种常用的技术&#xff0c;用于控制和修改HTTP请求和响应。通过使用HTTP代理&#xff0c;我们可以更好地控制网络请求的行为&#xff0c;提高安全性、隐私性和效率。下面我们将详细介绍如何在Python中使用HTTP代理进行数据传输。 一、设置HT…

tinyxml2

使用tinyxml2&#xff0c;得知道一些xml基础 xml tutorial--菜鸟 tinyxml2类对象 链接 结构 XMLNode 什么是节点 节点&#xff1a;元素、声明、文本、注释等。 XMLDocument xml文档(文件)对象。 作用&#xff1a; 加载xml文件&#xff0c; tinyxml2作用 先定义两个宏 …

Elasticsearch各种高级文档操作

本文来记录下Elasticsearch各种文档操作 文章目录 初始化文档数据查询所有文档匹配查询文档关键字精确查询文档多关键字精确查询文档字段匹配查询文档指定查询字段查询文档过滤字段查询文档概述指定想要显示的字段示例指定不想要显示的字段示例 组合查询文档范围查询文档概述使…

Redis+lua 解决秒杀超卖问题

商品超卖的原因是在高并发场景下,业务层面扣库存和库存的判断会出现并发情况&#xff0c;但是使用lua 脚本&#xff0c;就会避免超卖的发生。 1.在项目resources文件夹创建一个名为 stock.lua的脚本 if (redis.call(hexists, KEYS[1], KEYS[2]) 1) thenlocal stock tonumber…

HarmonyOS—构建第一个ArkTS应用(Stage模型)

创建ArkTS工程 构建第一个页面 若首次打开DevEco Studio&#xff0c;请点击Create Project创建工程。如果已经打开了一个工程&#xff0c;请在菜单栏选择File > New > Create Project来创建一个新工程。选择Application应用开发&#xff0c;选择模板“Empty Ability”&am…

Intel Quartus II IP之DP1.4 工程的创建与使用

前述&#xff1a; Win10电脑安装了Quartus 21.4&#xff0c;这可以满足绝大多数工程&#xff0c;特别是对于简单调用fifo/ram等的工程&#xff0c;但是想要学习Quartus的HDMI/DP等高速接口类IP&#xff0c;首先需要创建HDMI/DP IP的设计demo工程&#xff0c;此时还需要安装Ecl…

android studio从空白开始

对我来说&#xff0c;真正的第一步是清理电脑C盘。从剩余8G清理到25G&#xff0c;把原来看不顺眼又不敢删的文件夹和软件全删了&#xff0c;删爽了的后果就是&#xff0c;用两天的时间在把一些环境配置慢慢装回来&#xff0c;node.js&#xff0c;jdk&#xff0c;npm。努力把它们…

SG3225HBN(晶体振荡器)

SG3225HBN晶体振荡器是一款低抖动、HCSL输出晶振&#xff0c;频率范围100MHz ~ 325MHz&#xff0c;3.2 2.5 1.05mm封装常规有源晶振&#xff0c;具有小尺寸&#xff0c;高稳定性&#xff0c;可以在G&#xff1a;-40℃至 85℃&#xff0c;H&#xff1a;-40℃至 105℃ 的温度内…

网页版短信平台主要功能有哪些|短信系统开发搭建源码

网页版短信平台主要功能有哪些|短信系统开发搭建源码 网页版短信平台是一种方便用户进行在线短信管理和发送的工具。它具有多项实用的功能&#xff0c;使用户能够更高效地进行短信通讯。以下是网页版短信平台的主要功能&#xff1a; 1. **短信发送和接收&#xff1a;** 用户可…

linux第一个小程序 --- 进度条【简洁】

行缓冲区的概念 结果&#xff1a;先输入hello world然后休眠三秒后结束 当去掉’\n“ 后&#xff0c;结果就变成了先休眠三秒&#xff0c;然后打印hello world后结束。 该现象就证明了缓冲区的存在。 当缓冲区中遇到’‘\n’或者缓冲区被写满后才会被打印出来&#xff0c;在第…

vue2项目导入高德地图

1、看官网新手入门链接导入原生高德地图&#xff1a; 展示地图-入门教程-地图 JS API 2.0 | 高德地图API 2、uniapp开发h5&#xff0c;使用map组件&#xff0c;使用高德地图&#xff1a; 在配置文件中配置地图为高德&#xff0c;&#xff08;默认使用的是腾讯&#xff09;&am…

港科夜闻|香港科大团队研发多功能,可重构和抗破坏单线感测器阵列

关注并星标 每周阅读港科夜闻 建立新视野 开启新思维 1、香港科大团队研发多功能、可重构和抗破坏单线感测器阵列。研究人员开发出一种受人类听觉系统启发的感测器阵列设计技术。透过模仿人耳根据音位分布来区分声音的能力&#xff0c;这种新型感测器阵列方法可能优化感测器阵列…

SpringBoot-基础篇

学了好久springBoot但是每一次使用都没有一个固定的方法或者是代码的模版&#xff0c;于是乎使用的时候吗&#xff0c;每次都会遇到很多的问题&#xff0c;所以&#xff0c;总结一篇博客用于日后方便自己开发使用&#xff0c;其中包含项目创建&#xff0c;坐标导入&#xff0c;…

一篇综述洞悉医学大型语言模型的原理,应用和挑战

在过去的一年中&#xff0c;随着 GPT-4、LLaMA、Mistral&#xff0c;PaLM 等先进技术的突飞猛进&#xff0c;大型语言模型&#xff08;Large Language Models&#xff09;已经引领全球人工智能进入了一个全新的基础模型时代&#xff0c;这一时代不仅开启了技术创新的新篇章&…

[足式机器人]Part2 Dr. CAN学习笔记- Kalman Filter卡尔曼滤波器Ch05-5+6

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记 - Kalman Filter卡尔曼滤波器 Ch05-56 5. An Example 2D例子6. Extended Kalman Filter扩展卡尔曼滤波器&#xff08;EKF&#xff09; 5. An Example 2D例子 6. Extended Kalman Filter扩展卡尔曼…

postman测试文件上传接口设置说明

Postman介绍及下载链接地址 Download Postman | Get Started for Free 打开postman 选择POST方法&#xff0c;然后设置goform 设置Header参数 设置Body参数&#xff0c;选择数据form-data 添加文件&#xff0c; 选择为文件属性 添加需要上传的文件