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

【语言学习】std::transform函数

阅读llvm的这个提交时,发现了其中使用了一个函数std::transform(原文对其进行了一层封装)

如果不理解std::transform的三个参数的关系,就会对第三个参数的lambda表达式理解不了。其实,第三个参数的作用是提供给了一种对第一个参数(std::transform中是前两个参数,分别是begin和end)的一种处理操作。所以第三个参数的lambda表达式的输入对象是第一个参数。

可以结合下面实例理解:


#include <iostream>
#include <vector>
#include <algorithm>int main() {std::vector<int> input = {1, 2, 3, 4, 5};std::vector<int> output;// 使用std::transform对input中的每个元素进行除以2的操作,并将结果存储到output中std::transform(input.begin(), input.end(), std::back_inserter(output),[&](int x) { return x / 2; });// 输出结果std::cout << "Input: ";for (auto i : input) {std::cout << i << " ";}std::cout << std::endl;std::cout << "Output: ";for (auto i : output) {std::cout << i << " ";}std::cout << std::endl;return 0;
}

输出的结果为:

Input: 1 2 3 4 5
Output: 0 1 1 2 2
可以看到,对每个元素进行了除2处理。

http://www.lryc.cn/news/312268.html

相关文章:

  • Java开发面试准备,轻松搞定SpringBoot数据校验
  • 信呼OA普通用户权限getshell方法
  • MySQL进阶之(四)InnoDB数据存储结构之行格式
  • 【Qt学习笔记】(四)Qt窗口
  • 入侵和攻击模拟 (BAS) 技术应用实践
  • 数据结构(七)——线性表的基本操作
  • Python 系统学习总结(基础语法+函数+数据容器+文件+异常+包+面向对象)
  • 汽车碰撞与刮伤的实用维修技术,汽车的车身修复与涂装修补教学
  • 网络信息安全:nginx漏洞收集(升级至最新版本)
  • 【go从入门到精通】go包,内置类型和初始化顺序
  • 【项目实战】高并发内存池(仿tcmalloc)
  • 计算机等级考试:信息安全技术 知识点一
  • 开展庆2024年“三八”国际妇女节系列纪念活动怎样向媒体投稿?
  • SpringBoot-集成Elasticsearch
  • 数据结构之顺序表及其实现!
  • Vue组件间通信实践
  • FISCO BCOS区块链平台上的智能合约压力测试指南
  • LabVIEW流量控制系统
  • Python 爱心代码
  • linux kernel物理内存概述(五)
  • 3分钟带你搞定电流采样电阻选型
  • 代码随想录算法训练营Day52 | 300.最长递增子序列、674.最长连续递增序列、718.最长重复子数组
  • 一个测试OOM killer的程序未触发OOM所带来的问题
  • SanctuaryAI推出Phoenix: 专为工作而设计的人形通用机器人
  • 李沐动手学习深度学习——4.2练习
  • CYQ.Data 支持 DaMeng 达梦数据库
  • 计网面试题整理上
  • code: 500 ] This subject is anonymous - it does not have any identifying
  • FC-AE-1553 协议
  • 代码随想录算法训练营day38|理论基础、509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯