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

c++ algorithm

cheatsheet:https://hackingcpp.com

在这里插入图片描述

transform

元素变换

https://blog.csdn.net/qq_44961737/article/details/146011174

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#include <iostream>
#include <vector>
#include <algorithm>int main() {std::vector<int> a = {1, 2, 3, 4, 5};std::vector<int> b = {10, 20, 30, 40, 50};std::vector<int> result(a.size());std::transform(a.begin(), a.end(), b.begin(), result.begin(),[](int x, int y) { return x + y; });for (int x : result) std::cout << x << " ";// 输出: 11 22 33 44 55return 0;
}

reduce

并行求和
和accumulate区别: https://blog.csdn.net/2401_88063487/article/details/146892173
在这里插入图片描述

#include <algorithm>
#include <execution>
#include <iostream>
#include <vector>
using namespace std;int main()
{std::vector<int> src{ 1,2,3,4,5,6,7,8 };int sum1 = std::reduce(std::execution::par, src.begin(), src.end());cout << "sum1: " << sum1 << endl;return 0;
}

transform_reduce

https://blog.csdn.net/www_dong/article/details/132636826
可以理解为transform+reduce,先变换再相加,返回一个数

#include <algorithm>
#include <execution>
#include <iostream>
#include <vector>
using namespace std;int main()
{std::vector<int> src{ 1,2,3,4,5,6,7,8 };int sum = std::transform_reduce(std::execution::par,src.begin(), src.end(), 0,std::plus<int>{}, [](int x) {return x * 2;});cout << "sum: " << sum << endl;  //  输出 sum: 72return 0;
}

inclusive_scan

计算前缀运算结果

默认加法

在这里插入图片描述

使用乘法运算函数对象std::multiplies,计算元素累乘

在这里插入图片描述

其他仿函数

https://www.cnblogs.com/cyssmile/p/12790854.html
less greater greater_equal less_equal not_equal_to
logical_and logical_or logical_not
minus plus divide modulus negate

自定义函数

#include <iostream>
#include <vector>
#include <algorithm> // 包含 std::transformint doubleValue(int elem) {return elem * 2;
}int main() {std::vector<int> numbers = {1, 2, 3, 4, 5};std::vector<int> result(numbers.size());std::transform(numbers.begin(), numbers.end(), result.begin(), doubleValue);return 0;
}
http://www.lryc.cn/news/2398264.html

相关文章:

  • 《前端面试题:BFC(块级格式化上下文)》
  • HertzBeat的告警规则如何配置?
  • 安全-JAVA开发-第一天
  • 6月2日上午思维训练题解
  • 高考数学易错考点01 | 临阵磨枪
  • 【CF】Day69——⭐Codeforces Round 897 (Div. 2) D (图论 | 思维 | DFS | 环)
  • MySQL中的字符串分割函数
  • 前端八股之Vue
  • Matlab数值计算
  • 谷歌地图高清卫星地图2026中文版下载|谷歌地图3D卫星高清版 V7.3.6.9796 最新免费版下载 - 前端工具导航
  • 条形进度条
  • 悟饭游戏厅iOS版疑似流出:未测试版
  • 95. Java 数字和字符串 - 操作字符串的其他方法
  • IBM DB2分布式数据库架构
  • 初始化已有项目仓库,推送远程(Git)
  • Android Studio 向模拟器手机添加照片、视频、音乐
  • 数据结构-算法学习C++(入门)
  • 访谈 | 吴恩达全景解读 AI Agents 发展现状:多智能体、工具生态、评估体系、语音栈、Vibe Coding 及创业建议一文尽览
  • 连接关键点:使用 ES|QL 联接实现更丰富的可观测性洞察
  • Tiktok App 登录账号、密码、验证码 XOR 加密算法
  • Flask + Celery 应用
  • 奥威BI+AI数据分析:企业数智化转型的加速器
  • python打卡day43
  • MySQL 如何判断某个表中是否存在某个字段
  • Linux --进程优先级
  • 安装和配置 Nginx 和 Mysql —— 一步一步配置 Ubuntu Server 的 NodeJS 服务器详细实录6
  • Linux 测试本机与192.168.1.130 主机161/udp端口连通性
  • OpenCV 滑动条调整图像亮度
  • 图解gpt之注意力机制原理与应用
  • 硬件学习笔记--65 MCU的RAM及FLash简介