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

专业网站设计制合肥作大美工素材网

专业网站设计制合肥作,大美工素材网,wordpress如何上传,营销型网站的分类文章目录 1. 简介2. 函数签名3. 使用场景3.1 简单的累加操作3.2 自定义归并操作3.3 并行计算的性能优势 4. 注意事项4.1 归并操作的结合律和交换律4.2 默认值的使用 5. 总结 1. 简介 std::reduce 是 C17 标准库中引入的一个算法#xff0c;用于对范围内的元素进行归并操作。它… 文章目录 1. 简介2. 函数签名3. 使用场景3.1 简单的累加操作3.2 自定义归并操作3.3 并行计算的性能优势 4. 注意事项4.1 归并操作的结合律和交换律4.2 默认值的使用 5. 总结 1. 简介 std::reduce 是 C17 标准库中引入的一个算法用于对范围内的元素进行归并操作。它类似于 std::accumulate但在某些情况下提供了更灵活的处理方式尤其是在并行计算方面。 2. 函数签名 std::reduce 的基本函数签名如下 templateclass InputIt typename std::iterator_traitsInputIt::value_type reduce(InputIt first, InputIt last);templateclass InputIt, class T T reduce(InputIt first, InputIt last, T init);templateclass InputIt, class T, class BinaryOperation T reduce(InputIt first, InputIt last, T init, BinaryOperation binary_op);templateclass ExecutionPolicy, class ForwardIt typename std::iterator_traitsForwardIt::value_type reduce(ExecutionPolicy policy, ForwardIt first, ForwardIt last);templateclass ExecutionPolicy, class ForwardIt, class T T reduce(ExecutionPolicy policy, ForwardIt first, ForwardIt last, T init);templateclass ExecutionPolicy, class ForwardIt, class T, class BinaryOperation T reduce(ExecutionPolicy policy, ForwardIt first, ForwardIt last, T init, BinaryOperation binary_op);InputIt/ForwardIt迭代器类型表示要归并的范围。T归并操作的初始值类型。BinaryOperation用于归并的二元操作函数。ExecutionPolicy执行策略可以是 std::execution::seq顺序执行、std::execution::par并行执行或 std::execution::unseq无序执行。 3. 使用场景 3.1 简单的累加操作 以下是一个简单的累加示例 #include iostream #include vector #include numericint main() {std::vectorint nums {1, 2, 3, 4, 5};int sum std::reduce(nums.begin(), nums.end());std::cout Sum: sum std::endl; // 输出 15return 0; }这里std::reduce 默认使用加法操作。 3.2 自定义归并操作 可以通过传递自定义的二元操作函数来实现不同的归并逻辑。例如计算数组中元素的最大值 #include iostream #include vector #include numeric #include executionint main() {std::vectorint nums {1, 2, 3, 4, 5};int maxElement std::reduce(std::execution::par, nums.begin(), nums.end(), nums[0], [](int a, int b) {return std::max(a, b);});std::cout Maximum element: maxElement std::endl; // 输出 5return 0; }这里我们使用了 std::execution::par 来启用并行执行。 3.3 并行计算的性能优势 std::reduce 支持并行执行策略这使得它在处理大规模数据时能够显著提高性能。例如计算一个大数组的和 #include iostream #include vector #include numeric #include execution #include chronoint main() {std::vectorint nums(10000000, 1); // 一个包含 1000 万个元素的数组auto start std::chrono::high_resolution_clock::now();int sum std::reduce(std::execution::par, nums.begin(), nums.end());auto end std::chrono::high_resolution_clock::now();auto duration std::chrono::duration_caststd::chrono::milliseconds(end - start).count();std::cout Sum: sum , Time taken: duration ms std::endl;return 0; }通过使用 std::execution::parstd::reduce 可以利用多核处理器进行并行计算。 4. 注意事项 4.1 归并操作的结合律和交换律 std::reduce 的归并操作要求是结合律Associative和交换律Commutative的。如果归并操作不满足这些性质结果可能是不确定的。例如减法操作不满足结合律和交换律因此在并行执行时可能会导致不同的结果 std::vectorint nums {32, 16, 8, 4, 2, 1}; int result1 std::reduce(nums.begin() 1, nums.end(), nums[0], std::minus{}); int result2 std::reduce(std::execution::par, nums.begin() 1, nums.end(), nums[0], std::minus{}); std::cout result1 , result2 std::endl; // 输出可能不同4.2 默认值的使用 std::reduce 的默认值是元素类型的默认构造值。如果默认值不是归并操作的单位元Identity Element可能会导致意外的结果。例如对于整数类型加法的单位元是 0乘法的单位元是 1。 5. 总结 std::reduce 是一个强大且灵活的算法适用于各种归并操作尤其是需要并行处理的场景。它与 std::accumulate 类似但在并行执行方面提供了更好的支持。通过合理使用 std::reduce可以简化代码并提高性能。 希望这篇教程对你有所帮助如果有任何问题欢迎随时提问。
http://www.dnsts.com.cn/news/115085.html

相关文章:

  • 吉林省城乡建设厅网站6可以做同城活动的网站
  • 阿里巴巴公司网站建设益阳在线官网
  • 网站续费续的是什么钱做网站需要下什么软件
  • 自己网站做访问统计代码这样做自己公司的网站
  • 贵阳模板建站定制文字直播网站怎么做的
  • 用asp做网站怎么美观查网站开通时间
  • 如何让新网站被收录wordpress媒体文件位置
  • 登陆网站空间的后台西北旅游攻略
  • 代理域名网站的公司淮阳住房城乡建设局网站
  • 河北邯郸特色美食推广网站优化怎么做
  • 一个网站做多访问量网站分类主要有哪些
  • 怎么查询最新网站国内军事新闻大事件
  • 网站建设公司华网天下官网世界知名设计公司名称
  • 在线代理浏览国外网站seo网站推广是什么
  • 怎么在网站上做404页面恢复最近删除的网站
  • 一个网站多个域名重定向怎么做西安高校网站建设
  • 杭州网站案列工业设计公司属于什么行业
  • 网站制作与建设教程下载美发店网站源码
  • 做网站跳转怎么收费浙江创都建设有限公司网站
  • 中国建设人才服务信息网是正规网站广西桂林
  • 什么行业做网站搜索番禺网站开发公司
  • 企业网站小程序源码福田庆三案例照
  • 深圳网站制作880传媒公司商业计划书
  • 如何上传模板到网站视频链接生成网站
  • 珠海华兴建设工程有限公司网站会员管理系统软件哪个好
  • vs简易新闻建设网站找代加工产品哪个网
  • 中国临沂网站优化西安的商城网站设计
  • 网站开发需要什么专业广告投放系统源码
  • 网站建设制作方法wordpress
  • 郑州seo网站有优化住房和城乡建设部网站监理工程师