当前位置: 首页 > news >正文

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

代码来源

相关文章:

  • 【小呆的力学笔记】弹塑性力学的初步认知二:应力应变分析(2)
  • 小黑艰难的前端啃bug之路:内联元素之间的间隙问题
  • Python 进阶语法:lambda函数
  • 浅聊 DNS 和 host
  • MySQL索引类型及数据结构【笔记】
  • obsidian阅读pdf和文献——与zotero连用
  • 【yaml 文件使用】pytest+request 框架中 yaml 配置文件使用
  • 【云原生】k8s图形化管理工具之rancher
  • JVM篇:垃圾回收算法
  • 基于frp工具实现内网穿透,跨局域网远程SSH登录
  • Spring Boot整合Redis的高效数据缓存实践
  • 《30天自制操作系统》 第一周(D1-D7) 笔记
  • GraphicsMagick 的 OpenCL 开发记录(二十五)
  • Vue2 - keep-alive 作用和原理
  • Sql server强制走索引
  • Centos6.8 使用rpm安装mysql5.7
  • Javascript 原型链
  • MySQL-事务管理(基础)
  • STAR法则
  • 给github项目添加CI badge
  • 排序算法之--选择排序
  • 手机app有了短信验证码还有没必要有图片验证码?
  • 思考 CSS 架构
  • 一个完整Java Web项目背后的密码
  • 阿里云重庆大学大数据训练营落地分享
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #HarmonyOS:Web组件的使用
  • #传输# #传输数据判断#
  • (a /b)*c的值
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (分布式缓存)Redis分片集群
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转)setTimeout 和 setInterval 的区别
  • (转载)VS2010/MFC编程入门之三十四(菜单:VS2010菜单资源详解)
  • (转载)利用webkit抓取动态网页和链接
  • ***原理与防范
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .NET教程 - 字符串 编码 正则表达式(String Encoding Regular Express)
  • .NET企业级应用架构设计系列之开场白
  • .net实现客户区延伸至至非客户区
  • .NET与 java通用的3DES加密解密方法
  • @synthesize和@dynamic分别有什么作用?
  • []常用AT命令解释()
  • [2009][note]构成理想导体超材料的有源THz欺骗表面等离子激元开关——
  • [51nod1610]路径计数
  • [Android]Android开发入门之HelloWorld