讲师中心 微信公众号

工具推荐

视频效率加速
Laper
Laper

剧本策划到成片协作

Seko
Seko

AI短剧一键生成成片

updream

一键生成高质量推广成片

剧云
剧云

中文短剧剧本制作平台

STL算法库中有哪些常用遍历方法 for_each与transform的典型应用

千辰小哥_2127

千辰小哥_2127

发布时间:2025-06-30 11:38:06

|

239人浏览过

|

来源于php中文网

原创

for_each用于执行操作不改变数据,transform用于转换数据产生新结果。for_each适用于遍历元素并执行如打印、记录日志等副作用操作,不会修改原容器内容;而transform用于将元素转换后存储到另一容器或覆盖原容器,支持一元和二元操作,适合数据格式转换、数值运算等场景;使用时应根据是否需要生成新数据、是否需修改原数据以及是否有副作用来选择合适的方法。

STL算法库中有哪些常用遍历方法 for_each与transform的典型应用

STL算法库提供了很多用于容器遍历和操作的函数,其中 for_each 和 transform 是两个非常常用且功能不同的遍历方法。它们都定义在 <algorithm></algorithm> 头文件中,并结合函数对象或lambda表达式使用,能够简洁地完成对容器元素的批量处理。

STL算法库中有哪些常用遍历方法 for_each与transform的典型应用

for_each:执行特定操作,不改变原数据

for_each 的作用是对容器中的每个元素执行一次指定的操作。它不会修改容器中的内容,但可以用来输出、统计、调用某些副作用函数等。

STL算法库中有哪些常用遍历方法 for_each与transform的典型应用

典型应用场景:

科学计算器在线使用工具代码
科学计算器在线使用工具代码

html5 css3制作在线科学计算器ui布局,3D计算器面板,加减乘除数字计算器工具特效。

下载
  • 遍历并打印容器元素
  • 对每个元素执行某个动作(如记录日志、更新状态)
vector<int> nums = {1, 2, 3, 4, 5};
for_each(nums.begin(), nums.end(), [](int n) {
    cout << n << " ";
});

这个例子会输出所有元素,但不会改变 nums 中的内容。

STL算法库中有哪些常用遍历方法 for_each与transform的典型应用

使用建议:

  • 如果只是想“看看”每个元素,或者对每个元素做些额外事情,不要改值的话,首选 for_each
  • 可以传入函数指针、仿函数或lambda表达式
  • 注意避免在 for_each 中修改元素本身,因为参数是按值传递的,修改无效(除非用引用)

transform:转换数据,常用于生成新结果

transform 不仅能遍历元素,还能将每个元素进行某种变换后存入另一个容器或覆盖原容器。它有两种形式:

  • 单容器输入(一元操作)
  • 双容器输入(二元操作)

典型应用场景:

  • 数据格式转换(如字符串转小写)
  • 数值运算(如乘以一个系数)
  • 合并两个序列生成新数据
vector<int> src = {1, 2, 3, 4, 5};
vector<int> dst(src.size());
transform(src.begin(), src.end(), dst.begin(), [](int x) {
    return x * 2;
});

这段代码把 src 中的每个数乘以2,结果保存到 dst 中。

使用技巧:

  • 想要修改原容器时,可以把目标地址设为源地址
  • 使用双参数版本时注意两个容器长度一致
  • 结合标准函数对象(如 std::negate)或自定义函数更灵活

for_each 与 transform 的区别与选择

虽然两者都能遍历,但适用场景不同:

  • 是否需要产生新数据?

    • 不需要 → 用 for_each
    • 需要 → 用 transform
  • 是否要修改原数据?

    • 建议不要在 for_each 中修改,而 transform 就是用来转换的
  • 是否有副作用?

    • 有副作用(比如打印、网络请求)→ 用 for_each
    • 纯计算转换 → 用 transform

基本上就这些。这两个算法都很实用,掌握好它们可以让你的 STL 编程更简洁高效。关键在于理解它们的行为差异,选对合适的工具去做对应的事情。

热门AI工具

更多
DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

二狗PPT
二狗PPT Hot

一款AI演示文稿工具,主要用于专为中式职场打造的AI PPT生成工具,适合需要提升相关任务效率的用户。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

相关专题

更多
js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

1938

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

3184

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

6384

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

6549

2023.11.24

java读取文件转成字符串的方法
java读取文件转成字符串的方法

Java8引入了新的文件I/O API,使用java.nio.file.Files类读取文件内容更加方便。对于较旧版本的Java,可以使用java.io.FileReader和java.io.BufferedReader来读取文件。在这些方法中,你需要将文件路径替换为你的实际文件路径,并且可能需要处理可能的IOException异常。想了解更多java的相关内容,可以阅读本专题下面的文章。

8074

2024.03.22

php中定义字符串的方式
php中定义字符串的方式

php中定义字符串的方式:单引号;双引号;heredoc语法等等。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

12534

2024.04.29

go语言字符串相关教程
go语言字符串相关教程

本专题整合了go语言字符串相关教程,阅读专题下面的文章了解更多详细内容。

6499

2025.07.29

c++字符串相关教程
c++字符串相关教程

本专题整合了c++字符串相关教程,阅读专题下面的文章了解更多详细内容。

7307

2025.08.07

Go-Zero API开发使用教程
Go-Zero API开发使用教程

本专题聚焦Go-Zero的API开发,拆解.api描述文件的语法结构、路由与分组定义、参数绑定与校验规则,说明统一响应体、JWT鉴权、跨域与接口文档生成的落地方式,并给出网关聚合与接口测试的实践建议。

20

2026.11.12

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Go-Zero goctl安装与使用手册
Go-Zero goctl安装与使用手册

共0课时 | 0人学习

DBeaver生态工具dbvr官方手册
DBeaver生态工具dbvr官方手册

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn