新闻中心

C++如何使用for_each算法_C++标准算法遍历容器的用法

2025-11-20
浏览次数:
返回列表
for_each是中的算法,用于遍历容器元素并执行操作,支持lambda、函数指针和仿函数,可修改元素值但不改变容器结构。

c++如何使用for_each算法_c++标准算法遍历容器的用法

for_each 是 C++ 标准库中定义在 gorithm> 头文件里的一个通用算法,用于对容器中的每个元素执行指定的操作。它比传统的 for 循环更简洁、安全,并支持函数指针、函数对象(仿函数)以及 lambda 表达式等多种调用方式。

包含必要的头文件

使用 for_each 前,必须包含 和对应的容器头文件,例如

#include
#include
#include iostream>

基本语法

for_each 的函数原型如下:

template
UnaryFunction for_each(InputIt first, InputIt last, UnaryFunction f);

它接受三个参数:

  • first:起始迭代器
  • last:结束迭代器(不包含)
  • f:可调用对象,对每个元素执行操作

返回值是传入的函数对象(可用于有状态的仿函数)。

使用方式示例

以下通过 vector 容器演示几种常见的 for_each 用法。

1. 使用 Lambda 表达式(推荐)

Lambda 让代码更直观,适合简单操作:

std::vector nums = {1, 2, 3, 4, 5};

std::for_each(nums.begin(), nums.end(), [](int n) {
    std::cout });
// 输出: 1 2 3 4 5

2. 使用函数指针

小云雀 小云雀

剪映出品的AI视频和图片创作助手

小云雀 1949 查看详情 小云雀

定义一个普通函数,然后传入:

void print(int n) {
    std::cout }

std::for_each(nums.begin(), nums.end(), print);

3. 使用函数对象(仿函数)

适用于需要保存状态的场景:

struct Accumulate {
    int sum = 0;
    void operator()(int n) { sum += n; }
};

Accumulate acc = std::for_each(nums.begin(), nums.end(), Accumulate());
std::cout

4. 修改容器元素

若需修改元素,应使用引用参数:

std::for_each(nums.begin(), nums.end(), [](int& n) {
    n *= 2;
});
// nums 变为 {2, 4, 6, 8, 10}

适用所有标准容器

for_each 不仅适用于 vector,还可用于 list、deque、set、map 等任何提供迭代器的容器。例如遍历 map:

std::map<:string int> ages = {{"Alice", 25}, {"Bob", 30}};

std::for_each(ages.begin(), ages.end(), [](const auto& pair) {
    std::cout });

基本上就这些。for_each 提供了一种更现代、更安全的遍历方式,结合 lambda 使用非常高效。注意它不会改变容器结构,但可通过引用修改元素值。

以上就是C++如何使用for_each算法_C++标准算法遍历容器的用法的详细内容,更多请关注其它相关文章!


# 怎么做  # 怎么才能增加关键词排名  # seo实战密码 pdf 下载  # 推广营销价格区间  # 什么网站能发广告推广  # 留学生移民网站建设  # 盐亭营销短视频推广平台  # 学校社区网站推广语  # 信阳衡水网站优化哪家好  # 横沥网站优化哪个好  # 体检中心营销推广计划  # 多线程  # 解决方法  # 迭代  # c++  # 重写  # 头文件  # 适用于  # 如何使用  # 有什么  # 遍历  # 标准库  # stream  # ios  # ai  # go  # for_each 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 谷歌浏览器无痕模式怎么开 Chrome开启无痕浏览设置方法【教程】  漫蛙manwa官网登录界面_漫蛙漫画网页版主站入口  Promise错误处理:在catch后终止链式then执行的策略  机器学习中对数变换预测结果的反向还原  使用J*aScript检测输入元素是否包含在特定类中  快手官方唯一登录入口 谨防山寨钓鱼网站  解决Bootstrap卡片顶部边距导致背景图下移的问题  AO3官网镜像链接 Archive of Our Own同人文在线浏览  Yandex搜索引擎一键访问入口_俄罗斯Yandex官网免登录  为什么简单的XML文件也会解析失败? 检查隐藏的非打印字符(如BOM)的方法  J*a应用程序首次运行自动创建文件与目录的最佳实践  Tabulator表格日期时间排序问题及自定义解决方案  Python多版本共存与虚拟环境管理深度指南  深入理解与实现最大堆的Heapify过程:常见错误与修正  动漫岛观看全网网 动漫岛在线正版动漫入口  支付宝碰一碰设备是REDMI手机吗 博主拆机辟谣:处理器、内存都不一样  Excel文件在线转换快速入口 Excel在线格式转换网站  C++ map遍历方法大全_C++ map迭代器使用总结  Go与Ruby之间实现AES加密互通:CFB模式下的密钥长度匹配策略  J*a TimerTask文件监控:HashMap状态管理与常见陷阱规避指南  谷歌浏览器最新官方入口链接 谷歌浏览器网页版官网导航  在J*a中如何使用Stream.map转换元素_Stream映射操作解析  C++如何实现一个装饰器模式_C++设计模式之动态地给对象添加额外职责  PowerPoint如何制作滚动字幕结尾彩蛋_PowerPoint路径动画实现平滑滚动字幕效果  漫蛙2正版漫画站 漫蛙2网页版快速访问入口  Win11文件资源管理器卡顿怎么修 Win11重置资源管理器进程优化响应速度【修复方法】  c++ 命名空间怎么用 c++ namespace使用指南  不同用户不同价格! 索尼开启账户个性化定价测试  红果短剧网页版官网入口 官方最新网址发布  mysql如何设置表访问权限_mysql表访问权限配置  Win10快速启动功能利弊分析 Win10开启或关闭快速启动教程【技巧】  如何使用spryker/configurable-bundles-products-resource-relationship模块解决复杂产品捆绑关系难题  Composer如何解决json扩展缺失的错误  AO3网页版最新入口合集 Archive of Our Own在线访问指南  在WordPress中通过REST API获取BasicAuth保护的远程文章  html5 app怎么运行环境_配html5 app运行环境【教程】  HTML长属性值处理:表单action路径优化与代码规范应对  怎么去除衣服上的口红印_生活小妙招教你用酒精轻松擦除  消息称三星明年 2 月正式发布 HBM4,与 SK 海力士同台竞技  一加手机拍照效果不好怎么办 一加哈苏影像调校与专业模式使用教程【高手篇】  JUnit5/Mockito:优雅测试内部依赖与异常处理的实践  Win11怎么设置开机NumLock亮 Win11修改注册表InitialKeyboardIndicators值  C++如何连接MySQL数据库_C++使用Connector/C++操作MySQL数据库教程  邮政快递包裹最新位置 邮政快递实时追踪入口  拼多多视频播放卡顿如何处理 拼多多视频播放优化技巧  如何使用Node.js csv 包按条件移除含空字段的CSV记录  深入理解Go语言中Map值与方法接收器的交互:为什么需要临时变量  c++中的std::basic_string的SSO优化_c++短字符串优化深度解析  TikTok国际版网页端快速入口 TikTok全球版短视频浏览教程  我的世界mc.js免费游戏直接能玩 我的世界mc.js小游戏免费秒玩入口 

搜索