std::for_each

`std::for_each` 是 C++ STL 中的标准函数之一,用于对指定的容器或序列中的元素执行指定的操作。该函数的头文件为 `<algorithm>`,定义在 `namespace std` 中,因此需要包含该头文件才能使用该函数。

`std::for_each` 函数是 C++ STL 中自 C++98 就开始提供的函数,因此在 C++98/03、C++11、C++14 等版本中都可用。由于 `std::for_each` 很常用,其定义已经稳定,因此在 C++17、C++20 等新版本中依然继续保留并使用。

需要注意的是,C++14 和 C++17 都对 `std::for_each` 进行过更改,新增了一个返回值,用于返回执行完毕后的第三个参数的值。因此,在使用 `for_each` 函数时,需要确保自己所用的 C++ 版本,以保证代码的正确性。

for_each第三个参数是迭代器问题

问题

按照常理,map的迭代器应该就是std::map<T1,T2>::iterator,但是为什么下面的代码时错误的。

for_each(m_m.begin(),m_m.end(),[](std::map<int,int>::iterator iter){std::cout<<iter->second<<std::endl;});

vector也一样:

for_each(v.begin(),v.end(),[](std::vector<int>::iterator iter){std::cout<<*iter<<std::endl;});

原因

for_each的第三个参数是一个函数指针,而for_each内部实现是:

1,获取迭代器的值;

2,将这个值以值传递的方式传递给for_each的第三个参数。

//for_each()的实现如下
template <typename Iterator, typename Operation>Operation for_each (Iterator beg, Iterator end, Operation op){while(beg != end){op(*beg);++beg;}return op;}

代码来源

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

「优选算法刷题」:汉明距离

一、题目 两个整数之间的 汉明距离 指的是这两个数字对应二进制位不同的位置的数目。 给你两个整数 x 和 y&#xff0c;计算并返回它们之间的汉明距离。 示例 1&#xff1a; 输入&#xff1a;x 1, y 4 输出&#xff1a;2 解释&#xff1a; 1 (0 0 0 1) 4 (0 1 0 0)↑ …

【JavaSE篇】——类和对象

目录 &#x1f393;类定义和使用 &#x1f393;简单认识类 &#x1f6a9;类的定义格式 ❗注意事项 &#x1f393;类的实例化 &#x1f6a9;什么是实例化 &#x1f6a9;类和对象的说明 &#x1f393;this引用 &#x1f6a9;为什么要有this引用 &#x1f6a9;什么是thi…

【JavaScript 基础入门】02 JavaScrip 详细介绍

JavaScrip 详细介绍 目录 JavaScrip 详细介绍1. JavaScript 是什么2. JavaScript的作用3. HTML/CSS/JS 的关系4. 浏览器执行 JS 简介5. JavaScript 的组成6. JavaScript 的特点 1. JavaScript 是什么 JavaScript&#xff0c;通常缩写为 JS&#xff0c;是一种高级的&#xff0c;…

分布式技术浅见之复制

分布式技术浅见之复制 前言一、何为复制&#xff1f;1.1 主从复制和无主从复制1.2 同步复制与异步复制1.3 来点栗子1.3.1 Redis1.3.2 Mysql1.3.3 Mongo 二、复制是如何实现的&#xff1f;2.1 复制的过程2.2 来点栗子2.2.1 Redis2.2.2 Mysql2.2.3 Mongo 2.2 复制的实现方式2.4 举…

OpenHarmony—不支持解构赋值

规则&#xff1a;arkts-no-destruct-assignment 级别&#xff1a;错误 ArkTS不支持解构赋值。可使用其他替代方法&#xff0c;例如&#xff0c;使用临时变量。 TypeScript let [one, two] [1, 2]; // 此处需要分号 [one, two] [two, one];let head, tail [head, ...tail]…

MySQL十部曲之六:数据操作语句(DML)

文章目录 前言语法约定DELETEINSERTSELECT查询列表SELECT 选项子句FROMWHEREORDER BYGROUP BYHAVINGWINDOWLIMITFOR SELECT ... INTO连接查询CROSS JOIN和INNER JOINON和USINGOUTER JOINNATURE JOIN 子查询标量子查询使用子查询进行比较带有ANY、IN或SOME的子查询带有ALL的子查…

DETR解读,将Transformer带入CV

论文出处 [2005.12872] End-to-End Object Detection with Transformers (arxiv.org) 一个前置知识 匈牙利算法&#xff1a;来源于二部图匹配&#xff0c;计算最小或最大匹配 算法操作&#xff1a;在n*n的矩阵中 减去行列最小值&#xff0c;更新矩阵&#xff08;此时行或者…

搜维尔科技:【简报】元宇宙数字人赛道,优秀作品赏析《大福太郎》

这次采用亮眼的浅粉做为发色&#xff0c;为了贴合她小警察的身分 给了她一顶特制的警帽&#xff0c;上面有大福的荧光蓝叶片作为标 志&#xff0c;而在配件及裙子上也加入了许多科技元素的小巧思。 学校&#xff1a; 朝阳科技大学&#xff08;台湾&#xff09; 选手&#xff…

小周学JAVA—八股四

mybatis的优缺点 优点: 1.SQL写在XML里面&#xff0c;与业务代码分离&#xff0c;因此相对比较灵活&#xff0c;便于统一管理 2.spring集成很方便&#xff0c;由于使用的JDBC连接数据库&#xff0c;因此&#xff0c;不需要针对不同数据专门做兼容。 缺点: SQL的编写&#xff…

消息中间件之RocketMQ(二)

RocketMQ支持的消息类型 了解之前&#xff0c;首先要熟悉RocketMQ中的组件架构设计 1.顺序消息 将同一个订单(即具有相同的orderId)的消息按状态先后顺序消费的&#xff0c;所以消息生产者调用send方法发送时需要传入MessageQueueSelector接口的,实现类&#xff0c;将order…

【GitHub项目推荐--开源PDF 工具】【转载】

12 年历史的 PDF 工具开源了 最近在整理 PDF 的时候&#xff0c;有一些需求普通的 PDF 编辑器没办法满足&#xff0c;比如 PDF 批量合并、编辑等。 于是&#xff0c;我就去 GitHub 上看一看有没有现成的轮子&#xff0c;发现了这个 PDF 神器「PDF 补丁丁」&#xff0c;让人惊…

Vue+OpenLayers7入门到实战:快速搭建Vue+OpenLayers7地图脚手架项目。从零开始构建Vue项目并整合OpenLayers7.5.2

返回《Vue+OpenLayers7》专栏目录:Vue+OpenLayers7 前言 本章针对Vue初学者,对Vue不熟悉,甚至还不会Vue的入门学生读者。 本章会详细讲解从NodeJS环境到npm环境的各个步骤,再到使用vue-cli脚手架快速生成项目,以及添加OpenLayers7地图库依赖,编写简单的xyz高德地图显示…

VPP接口二层互联xconnect

以下命令将接口设置为L2二层互联模式&#xff0c;如果要双向流量&#xff0c;需要两个口都设置成此模式。一个接口上接收到的报文将发送到另外一个接口&#xff0c;反之亦然。 vpp# set interface state HundredGigabitEthernet65/0/0 up vpp# set interface state HundredGig…

【大厂AI课学习笔记】1.1.2 现阶段人工智能方法和技术领域

目录 1.2 现阶段人工智能方法和技术领域 1.2.1 从技术应用场景展开 计算机视觉 语音识别 自然语言处理 1.2.2 实现AI的技术工具 机器学习的主要类型&#xff1a; 深度学习的重要性&#xff1a; 1.2 现阶段人工智能方法和技术领域 1.2.1 从技术应用场景展开 计算机视觉…

RuoYi-Vue前后端分离后台开发框架运行详细教程

一、官网下载代码 RuoYi-Vue是一款基于SpringBootVue的前后端分离极速后台开发框架。 若依官网&#xff1a;http://ruoyi.vip演示地址&#xff1a;http://vue.ruoyi.vip代码下载&#xff1a;https://gitee.com/y_project/RuoYi-Vue 下载之后解压&#xff0c;ruoyi-ui是前端代…

opencv学习二值分析

内容来源于《opencv4应用开发入门、进阶与工程化实践》 二值分析&#xff1a; 常见的二值化方法&#xff1a; 基于全局阈值&#xff08;threshold&#xff09;得到的二值图像&#xff1b;基于自适应阈值&#xff08;adaptiveThreshold&#xff09;得到的二值图像&#xff1…

docker数据卷的使用

文章目录 1、数据卷产生背景2、数据卷的使用2.1、创建数据卷2.2、挂载数据卷2.3、共享数据卷2.4、删除数据卷2.5、备份和迁移数据卷 总结 1、数据卷产生背景 Docker的镜像是由一系列的只读层组合而来&#xff0c;当启动一个容器时&#xff0c;Docker加载镜像的所有只读层&…

JavaScript高级:构造函数

1 引言 构造函数是一种特殊的函数&#xff0c;主要用来初始化对象&#xff1b;常规的 {...} 语法允许创建一个对象&#xff0c;但是通过构造函数可以快速创建多个类似的对象 2 约定 1. 命名以大写字母开头&#xff1b; 2. 它们只能由 “new” 操作符来执行 <script>//…

【C++】filesystem

文章目录 1. 基本配置1.1. VS2019修改C标准1.2. filesystem的引入 2. 日常使用2.1. 认识2.2. 控制台输入路径并对路径进行基本操作 <filesystem>是C 17标准引入的标准库&#xff0c;主要用于处理文件系统的目录和文件操作&#xff0c;接下来总结该库的基本配置和日常使用…

Docker搭建Mysql5.7双主双从集群步骤

记录下在Docker搭建mysql5.7双主双从集群步骤 1.拉取镜像 docker pull mysql:5.72.创建对应数据卷 由于我们需要做数据持久化,所以先在本地创建对应四个节点的相应文件夹 #conf文件夹用于存放配置文件 mkdir -p /root/mysql/mysql-master/conf #data文件夹用于存放mysql数…